socket通信原理
2021/5/14 18:25:35
本文主要是介绍socket通信原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
网络编程三要素
1)IP:网络中每一台计算机的唯一标识。
2)端口:用于标识进程的逻辑地址
3)协议:定义通信规则
TCP
- 建立连接通道
- 数据无限制
- 面向连接(三次握手)
- 可靠
- 速度慢
- 举例:
蓝牙,QQ单聊,打电话
三次握手:
- 第一次
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 - 第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; - 第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
1.TCP协议客户端的步骤:
A:创建客户端的Socket对象 B:建立连接 Socket s = new Socket("192.168.3.100", 10010);//创建了对象也建立了连接,端口号要和服务端一致 C:获取输出流,写数据即可 OutputStream os = s.getOutputStream(); os.write("hello,tcp,我来了".getBytes()); D:释放资源 s.close();
2.TCP协议服务器端的步骤:
A:创建服务器端Socket对象 ServerSocket ss = new ServerSocket(10010);//端口号要和客户端写的一致 B:监听连接 Socket s = ss.accept();//阻塞式方法 C:获取输入流,读取数据,并显示 InputStream is = s.getInputStream(); byte[] bys = new byte[1024]; int len = is.read(bys);//阻塞阻塞式方法 String client = new String(bys, 0, len); System.out.println(client); D:释放资源 s.close();
案例:TCP服务器多线程,让服务器完成字符串反转功能,上传文件
UDP
- 把数据打包
- 数据有限制
- 面向无连接
- 不可靠
- 速度快
- 举例:
QQ聊天室(群聊)
1.UDP发送端(理解或者掌握)
A:创建发送端Socket服务对象 DatagramSocket ds = new DatagramSocket(); B:创建数据,并把数据打包 byte[] bys = "黄牛破解12306网站,刷票。说明黄牛也是IT出身".getBytes(); DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("192.168.3.100"), 12306); C:发送数据 ds.send(dp); D:释放资源 ds.close();
2.UDP协议接收数据步骤:(理解或者掌握)
A:创建接收端Socket服务对象 DatagramSocket ds = new DatagramSocket(12306); B:创建数据包(接收容器) byte[] bys = new byte[1024]; DatagramPacket dp = new DatagramPacket(bys, bys.length); C:调用接收方法 ds.receive(dp); D:解析数据包,把数据显示在控制台 String ip = dp.getAddress().getHostAddress(); String s = new String(dp.getData(), 0, dp.getLength()); System.out.println(ip + "---" + s); E:释放资源 ds.close();
案例:键盘录入数据发送到服务器,服务器和客户端多线程,聊天室
这篇关于socket通信原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享