1 套接字分类(1)流式套接字(SOCK_STREAM):双向数据传输,内设流量
控制,被传输的数据被看作无记录边界的字节流
适用于发送大批量数据
(2)数据报套接字(SOCK_DGRAM):双向数据传输服务,数据
以独立的包形式被发送,并且保留记录边界,不可靠,可能会
丢失数据,使用UDP实现数据报套接字。
(3)原始套接字(SOCK_RAW):允许对低层协议进行直接访问
一般用于对TCP、IP核心协议的网络编程。
端口:每个Socket都绑定到一个端口上,不同端口对应不同服务。使用端口号
识别主机上不同的进程。http:80,FTP:21
2协议:
2.1TCP:面向连接的可靠的,基于字节流的传输层通讯协议。
对应用进程送来的数据进行分片,以适合在网络层中传输
当接收到网络层传来的分组时,还要对分组进行确认,对
丢失的分组设置超时重发。因此会增加额外开销,效率低。
通过三段报文完成类似电话呼叫的建立简介过程。成为三次握手。
第一次握手:客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SEND
状态,等待服务器确认。
第二次握手:服务器收到SYN包,确认客户的SYN(ACK=x+1)
同时自己也发送一个SYN包(SEQ=y),及SYN+ACK
, 此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK,向服务器发送确认包
ACK(ACK=y+1),发送完毕,客户端和服务器进入
Established状态,完成三次握手。
终止一个连接要经过四次握手
只能端到端的通讯,不能多点通讯。
全双工方式传输,以字节流的方式传输,传输的数据无消息边界
同步与异步:同步指TCP程序执行到监听或接收语句时,未完成工作时
线程处于阻塞状态,等待工作完成,异步则会继续向下执行。
UDP:无连接通讯方式,不需要建立连接就可以发送,类似于发短信。
可以实现一对多传输。通过广播或组播的方式
通讯的基本步骤:
服务器端:
第一步:创建一个用于监听连接的Socket对象。
第二步:用指定的端口号和服务器的ip建立一个ENDPoint对象;
第三步:用socket对象的Bind()方法绑定EndPoint;
第四步:用socket对象的Listen()方法开始监听;
第五步:接收到客户端的连接,用socket对象的Accept()方法创建一个
新的用于和客户端进行通信的socket对象;
第六步:关闭socket;
客户端:
第一步:建立一个Socket对象
第二步:用指定的端口号和服务器的ip建立一个EndPoint对象
第三步:用socket对象的Connect()方法以上面建立的EndPoint对象
作为参数,向服务器发送请求。
第四步:如果连接成功,用socket对象的send()方法向服务器发送
消息。
第五步:用socket对象的Receive()方法接收服务器发来的消息
第六步:关闭socket
我的Socket理解
最新推荐文章于 2022-04-12 09:24:33 发布