多线程 udp通信和 tcp通信

网络通信协议(规则):对数据的传输格式 速率 步骤等作了规定 经常使用的是TCP\IP协议 UDP协议
IP地址 是电脑的地址 端口号指的是 电脑程序的端口号
InetAddress类
获取主机的inet对象
InetAddress inet=InetAddress.getByName("192.168.1.171");
获取本地主机对象
InetAddress inet2=InetAddress.getLocalHost();
获取主机名
inet.getHostName()
返回IP地址
inet.getHostAddress()
UDP协议
发送端不会在乎接收端是否收到,接收端也不会在乎发送端是否发送。
TCP协议
分客户端和服务器端 第一次握手是客户端向服务器端发出链接请求(请求链接) 你二次握手是服务器端向客户端回复一个响应(确认链接) 第三次握手 客户端在向服务端发送确认发送消息请求(正在链接)
UDP简单聊天
建立接收端
//建立DatagramSocket对象
DatagramSocket ds=new DatagramSocket(6666);
//建立接受数组
byte[] b=new byte[1024];
//建立数据包对象
while(true){
DatagramPacket dp=new DatagramPacket(b, b.length);
//接受数据
ds.receive(dp);
//拆包
//获取发送端ip地址
String ip=dp.getAddress().getHostAddress();
//获取端口号
int port=dp.getPort();
//获取数据长度
int length=dp.getLength();
System.out.println("ip地址为:"+ip+",端口号为:"+port+",发送内容为:"+new String (b,0,length));
}
//释放资源
//ds.close();数组

建立发送端
Scanner sc=new Scanner(System.in);
//建立数据包,封装要发送的数据以及明确接收端的IP和端口号
//明确接收端的ip地址
InetAddress ip=InetAddress.getByName("127.0.0.1");
//建立DatagramSocket对象 用于数据包发送
DatagramSocket ds=new DatagramSocket();
while(true){
byte[] b=sc.next().getBytes();
DatagramPacket dp=new DatagramPacket(b,b.length,ip,6666);
//发送
ds.send(dp);
}
//释放资源
//ds.close();服务器

 

 

 

 

 

tcp通信网络

分客户端和服务器端   第一次握手是客户端向服务器端发出链接请求(请求链接)  你二次握手是服务器端向客户端回复一个响应(确认链接)   第三次握手 客户端在向服务端发送确认发送消息请求(正在链接)socket

客户端:tcp

建立客户端对象:Socket socket=new Socket("127.0.0.1",6666);spa

经过Socket对象建立输出流对象:OutputStream out=socket.getOutputStream();server

写要传输的内容:out.write("你好".getbytes())
接收服务器返回的数据:建立数据接收流对象:InputStream in=socket.getInputStream()
建立接收数据用的byte数组:byte[] bytes=new char[1024];7.建立ch的长度:int len=in.read(bytes);
接收数据并打印system.out.println(内容是:+new String(bytes,0,len));
释放资源:socket.close();
对象

服务器端:
建立服务器对象:ServerSocket server=new ServerSocket(6666);
建立客户端接收对象:Socket socket=server.accrpt();
建立字节输入流:InputStream in=socket.getInputStream();
建立接收的byte数组:byte[] bytes=new byte[1024];
建立接收数据的byte数组长度:int len=in.read(bytes);  获得客户端ip:String ip=socket.getInetAddress().getHostAddress()
打印接收数据:system.out.println(ip地址:+ip+内容+new String(bytes,0,len));
回复客户端:1.建立字节输出流:OutputStream out=socket.getOutputStream();
写返回数据:out.writer("你好".getbytes); 3.释放资源:server.close();
blog

 

相关文章
相关标签/搜索