文档章节

InetAddress,UDP, TCP

chenruibing
 chenruibing
发布于 2015/06/14 21:29
字数 1141
阅读 76
收藏 5
点赞 0
评论 0

InetAddress,UDP, TCP

package hanshi.net;
import java.net.*;
public class count {
	public static void main(String[] args)throws Exception { 
		InetAddress ia = InetAddress.getLocalHost();  //获取本地的
		print(ia.getHostAddress());
		print(ia.getHostName());
		InetAddress iad = InetAddress.getByName("www.baidu.com"); //通过名字获取信息,可以是IP名字,也可以是主机名
		print(iad.getHostAddress());
		print(iad.getHostName());
	}
	static public void print(Object obj){
		System.out.println(obj);
	}
}




//UDP发送端


package hanshi.net;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.*;
public class count {
	public static void main(String[] args)throws Exception { 
		DatagramSocket ds = new DatagramSocket(110);
		BufferedReader bufd = new BufferedReader(new InputStreamReader(System.in));
		String str = null;
		while((str = bufd.readLine())!=null){
			if("over".equals(str)){
				break;
			}
			byte[] bt = str.getBytes();
			DatagramPacket dp = new DatagramPacket(bt,bt.length,InetAddress.getByName("192.168.109.119"),1000);
			ds.send(dp);
			
		}
		ds.close();
	}
	static public void print(Object obj){
		System.out.println(obj);
	}
}




//UDP接收端

package hanshi.net;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class count2 {

	public static void main(String[] args)throws Exception {
		DatagramSocket ds = new DatagramSocket(1000); //接受端一定要定义一个端口
		while(true){
			byte[] buf = new byte[1024];
			DatagramPacket dg = new DatagramPacket(buf, buf.length);
			ds.receive(dg);   //这里是阻塞方法,没接受到数据就会一直处于等待状态
			print(dg.getAddress().getHostAddress()+"***"+dg.getAddress().getHostName());  //通过数据包获取Address来进行操作
			print(new String(dg.getData(),0,dg.getLength()));   //获取数据流中的数据,要给定数据的长度
			print(dg.getPort());   //获取发送端的端口,如果发送端没有指定一个发送端口,这里就会获取到一个系统随机分配的端口
		}
		                  //接受端口可以是没有关闭的,就想服务器一样
	}
	static public void print(Object obj){
		System.out.println(obj);
	}

}










//TCP

package hanshi.net;
import java.io.OutputStream;
import java.net.*;
//如果Scoke的建立是没有传入参数的,那么建立后是没有连接的,但是可以通过connect来连接。。。
//这个一建立就有一个Scoket流,也就是网络流。。。
//一旦流建立成功就可以拿到输入流和输出流。。。
//服务端没有流对象,服务端是通过accept来获取客户端的流对象来使用的。。。
//服务端不可以关闭自己,但是可以关闭从客户端获取过来的流对象。。。
/*客户端结束后服务端也结束的原因是因为,在s.close()之后的意义就是在末尾加上-1来做结束标志,所以在服务端读取到了就是-1,以为结束了就返回null,所以就跳出循环,结束客户端。。。

简化代码:printWriter既可以接受字符流,也可以接受字节流。。。
*/
//理论上在Scokert就要抛出异常,如果连接不上就直接处理了啊。。。
public class count {
	public static void main(String[] args)throws Exception { 
		InetAddress ia = InetAddress.getLocalHost();
		Socket sk = new Socket(ia.getHostAddress(),1000);
		OutputStream os = sk.getOutputStream();
		os.write("chenruibing".getBytes());
		//os.close();  这一个可以不关闭,当关闭了socket后,依附在这个上面的流就会自动关闭
		sk.close();
	}
	static public void print(Object obj){
		System.out.println(obj);
	}
}




package hanshi.net;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class count2 {

	public static void main(String[] args)throws Exception {
		ServerSocket ss = new ServerSocket(1000);  //都要监听端口
		Socket s = ss.accept();   //这个也是阻塞式方法
		print(s.getInetAddress().getHostAddress()+"denglu");
		InputStream is = s.getInputStream();
		byte[] bt = new byte[1024];
		int len = is.read(bt);
		print(new String(bt,0,len));
		s.close();
		ss.close();
		
	}
	static public void print(Object obj){
		System.out.println(obj);
	}

}

TCP

套接字是两台机器间通信的端点。。。
服务端没有流对象,服务端是通过accept来获取客户端的流对象来使用的。。。
服务端不可以关闭自己,但是可以关闭从客户端获取过来的流对象。。。
编译结束后,要先启动服务端后启动客户端。。。。。。

class anli
{
	public static void main (String[] args)throws Exception
	{
		
		while(true)
		{
			Socket s = new Socket("192.168.109.119",12345);
			OutputStream os = s.getOutputStream();
			//os.write("ni hao ".getBytes());
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String line = br.readLine();
			os.write(line.getBytes());
			InputStream in  = s.getInputStream();
			byte[] bt = new byte[1024];
			int len = in.read(bt);
			System.out.println(new String(bt,0,len));
			//br.close();
		}

		//s.close();
	}
}
class rec 
{
	public static void main (String[] args)throws Exception
	{
		ServerSocket ss = new ServerSocket(12345);
		while(true)
		{
			Socket s = ss.accept();
			String ip = s.getInetAddress().getHostAddress();
			//System.out.println(ip+".......connect");
			InputStream in = s.getInputStream();
			byte[] bt = new byte[1024];
			int len = in.read(bt);
			System.out.println(new String(bt,0,len));
			OutputStream os = s.getOutputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String line = br.readLine();
			os.write(line.getBytes());
			s.close();
			//br.close();
		}
		
	}
}
tcp about two

/*
简化代码:printWriter既可以接受字符流,也可以接受字节流。。。
*/
class anli
{
	public static void main (String[] args)throws Exception
	{
		while(true)
		{
			Socket s = new Socket ("192.168.109.119",10086);
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			BufferedReader bfr = new BufferedReader(new InputStreamReader(s.getInputStream()));
			//BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
			PrintWriter pw = new PrintWriter(s.getOutputStream(),true);                  //使用printWriter的好处
			String line = null;
			while ((line = br.readLine())!=null)
			{
				if ("over".equals(line))
				{
					break;
				}
				//bfw.write(line);
				//bfw.newLine();
				//bfw.flush();
				pw.println(line); //一个有了前面多个代码的功能
				String str = bfr.readLine();
				System.out.println("Server:::"+str);
			}
			br.close();//输入流要关闭。。。   这两个是不能关掉的,要不然就一直报错
			s.close();
		}

	}
}
class rec
{
	public static void main (String[] args)throws Exception
	{
		ServerSocket ss = new ServerSocket(10086);
		while(true)
		{
			Socket s = ss.accept();
			BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
			//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
			PrintWriter pw = new PrintWriter(s.getOutputStream(),true);  //一定要加上true,要不然的结果就是数据传递不出去。。。
			String line = null;
			while((line = br.readLine())!=null)
			{
				pw.println(line.toUpperCase());
				//bw.write(line.toUpperCase());
				//bw.newLine();
				//bw.flush();
			}
			s.close();
			ss.close();
		}

	}
}



© 著作权归作者所有

共有 人打赏支持
chenruibing
粉丝 12
博文 203
码字总数 109101
作品 0
潮州
java基础12( 网络编程)

网络编程三要素 IP:一个计算机的标识 端口:应用程序都会对应一个端口,用来进行通信,有效端口:0~65535,其中0~1024系统使用或保留端口。 协议:两种协议(UDP,TCP) 特殊IP地址:127.0...

给我妖刀
2017/06/01
0
0
java基础专栏—java网络编程

java网络编程 在网络成层中TCP对应于四层 通常是对网络连接设备的驱动协议,例如对光纤和都对网线的驱动不一样 TCP/IP协议的核心,他用于将数据分组 包括TCP,UDP 主要是负责应用程序的协议。...

T-newcomer
2017/10/25
0
0
Java网络编程之简单UDP通信

UDP是一种基于不可靠连接的协议,它无法保证传输的数据能不丢失不重复到达,尽自己努力传输,但是不会重传,不需要建立连接,则它所需要的时间会很快。它是基于数据报为单位进行传输的,不想...

wbf961127
2017/11/12
0
0
Android第二十一天

一:TCP/IP协议 TCP/IP是一个协议族。 TCP:(Transmission Control Protocol)传输控制协议 IP:(Internet Protocol)互联网协议 四层网络体系结构:物理层(网络接口层)、互联网络层(包含I...

黄晓磊
2016/06/27
16
0
网络编程UDP/TCP协议

一、网络编程三要素 IP:网络中设备的标识,不易记忆,可用主机名 端口号:用于标识进程的逻辑地址,不同进程的标识 传输协议:通讯的规则常见协议:TCP,UDP UDP 把数据打成一个数据包 , 不...

走了丶
2017/08/26
0
0
Android Socket 编程

Socket 编程: 1.what is Socket 网络通信的一种接口 统称:套接字 用于描述IP地址和端口,是一个通信链的句柄。 应用程序通过 “套接字” 向 网络发出请求或者应答网络请求。 Socket 分为两...

疯子v1
2015/10/11
103
0
黑马程序员——网络编程篇

------- android培训、java培训、期待与您交流! ---------- 概述 1、网络模型 (1)、OSI参考模型 (2)、TCP/IP参考模型 2、网络通讯要素 (1)、IP地址 (2)、端口号 (3)、传输协议 3、过程 1,找...

optimisticpig
2014/05/12
0
0
Android中Socket通信之TCP与UDP传输原理

一、Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服...

SuShine
2015/09/07
168
0
JAVA基础(33)网络模型、网络通讯要素、InetAddress(IP地址类)、Socket、UDP传输(DatagramSocket和DatagramPacket)、UDP单对单聊天和群聊

网络模型: OSI(Open System Interconnection 开放系统互联)参考模型 TCP/IP 参考模型 网络通讯要素: IP地址:InetAddress。网络中设备的标识,不易记忆,可用主机名。本地回环地址:127...

Chason-洪
05/23
0
0
java socket编程

一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,...

叶孤魂
2013/02/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
8
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
4
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
171
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部