济宁三合一网站建设,东莞网站建设seo,今朝装饰和业之峰哪个好,免费的会计做账系统概念 Socket套接字#xff0c;是由系统提供用于网络通信的技术#xff0c;是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程。
分类
Socket套接字主要针对传输层协议划分为如下三类#xff1a;
流套接字#xff1a;使用传输层TCP…概念 Socket套接字是由系统提供用于网络通信的技术是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程。
分类
Socket套接字主要针对传输层协议划分为如下三类
流套接字使用传输层TCP协议
TCP即Transmission Control Protocol传输控制协议传输层协议。
以下为TCP的特点细节后续再学习
有连接可靠传输面向字节流有接收缓冲区也有发送缓冲区大小不限
对于字节流来说可以简单的理解为传输数据是基于IO流流式数据的特征就是在IO流没有关闭的情况下是无边界的数据可以多次发送也可以分开多次接收。
数据报套接字使用传输层UDP协议 UDP即User Datagram Protocol用户数据报协议传输层协议。 以下为UDP的特点细节后续再学习
无连接不可靠传输面向数据报有接收缓冲区无发送缓冲区大小受限一次最多传输64k
对于数据报来说可以简单的理解为传输数据是一块一块的发送一块数据假如100个字节必须一次发送接收也必须一次接收100个字节而不能分100次每次接收1个字节。
原始套接字 原始套接字用于自定义传输层协议用于读写内核没有处理的IP协议数据。
Java数据报套接字通信模型
对于UDP协议来说具有无连接面向数据报的特征即每次都是没有建立连接并且一次发送全部数据报一次接收全部的数据报。
java中使用UDP协议通信主要基于 DatagramSocket 类来创建数据报套接字并使用 DatagramPacket 作为发送或接收的UDP数据报。对于一次发送及接收UDP数据报的流程如下 以上只是一次发送端的UDP数据报发送及接收端的数据报接收并没有返回的数据。也就是只有请求没有响应。对于一个服务端来说重要的是提供多个客户端的请求处理及响应流程如下 Java流套接字通信模型 Socket编程注意事项
1. 客户端和服务端开发时经常是基于一个主机开启两个进程作为客户端和服务端但真实的场 景一般都是不同主机。
2. 注意目的IP和目的端口号标识了一次数据传输时要发送数据的终点主机和进程
3. Socket编程我们是使用流套接字和数据报套接字基于传输层的TCP或UDP协议但应用层协议也需要考虑这块我们在后续来说明如何设计应用层协议。
4. 关于端口被占用的问题
如果一个进程A已经绑定了一个端口再启动一个进程B绑定该端口就会报错这种情况也叫端 口被占用。对于java进程来说端口被占用的常见报错信息如下
此时需要检查进程B绑定的是哪个端口再查看该端口被哪个进程占用。以下为通过端口号查进程
的方式
在cmd输入 netstat -ano | findstr 端口号 则可以显示对应进程的pid。如以下命令显示了8888进程的pid在任务管理器中通过pid查找进程