加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

多线程 udp通讯和 tcp通讯

发布时间:2020-12-15 07:48:11 所属栏目:Java 来源:网络整理
导读:网络通讯协议(规则):对数据的传输格式 速率 步骤等做了规定 常用的是TCPIP协议 UDP协议 IP地址 是电脑的地址 端口号指的是 电脑程序的端口号 InetAddress类 获取主机的inet对象 InetAddress inet=InetAddress.getByName("192.168.1.171"); 获取本地主机

网络通讯协议(规则):对数据的传输格式 速率 步骤等做了规定 常用的是TCPIP协议 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,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?socket=new?Socket("127.0.0.1",6666);

通过Socket对象创建输出流对象:OutputStream?out=socket.getOutputStream();

写要传输的内容: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,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,len));
回复客户端:1.创建字节输出流:OutputStream?out=socket.getOutputStream();
写返回数据:out.writer("你好".getbytes);?3.释放资源:server.close();

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读