socket网络编程
一、三种套接字
-
流式套接字(SOCK_STREAM)。它提供了一种可靠的、面向连接的双向数据传输服务。实现了数据的无差错、无重复地发送,内设流量控制,被传输的数据看作是无记录边界的字节流。在TCP/IP协议族中,使用TCP来实现字节流的传输,当用户要发送大批量的数据,或对数据的传输有较高的要求时使用流式套接字。
-
数据报套接字(SOCK_DGRAM)。它提供了一种无连接、不可靠的双向数据传输服务。数据以独立的包形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端数据按发送顺序接收。在TCP/IP协议族中,使用UDP(Winsock 2也支持其他的协议)来实现数据报套接字。
-
原始套接字(SOCK_RAW)。该套接字允许对较低层协议(如IP或ICMP)进行直接访问。在直接对TCP/IP核心协议编程时要用到这种套接字。
二、相关函数
- socket() 给网络程序创建套接字。
- bind() 地址绑定,服务器必须绑定,客户端可以不用。
- listen() 服务器监听连接,应用于面向连接的通信过程中。
- connect() 客户端提出连接申请,如果服务器接受请求,就在服务器远程套接字和客户端本地套接字之间建立一条连接,面向连接的流式套接字。
- accept() 服务器进入监听状态后,接受连接请求,面向连接的通信。
- send() 面向连接的流式套接字发送, sendto() 无连接的数据报套接字发送。
- recv() recvfrom() 与上面对应,接收。
- close() 关闭。

浙公网安备 33010602011771号