TCP的套接字

TCP的套接字 = IP + 端口号

套接字有三种:1. 流式套接字( SOCK_STREAM );2: 数据报套接字( SOCK_DGRAM );3.原始套接字( SOCK_RAW 

基于 TCP 的 socket 编程是采用的流式套接字。

分为以下步骤:

1 :加载套接字库,创建套接字 (WSAStartup()/socket()) ;

2 :绑定套接字到一个 IP 地址和一个端口上 (bind()) ;

3 :将套接字设置为监听模式等待连接请求 (listen()) ;

4 :请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字 (accept()) ;

5 :用返回的套接字和客户端进行通信 (send()/recv()) ;

6 :返回,等待另一连接请求;

7 :关闭套接字,关闭加载的套接字库 (closesocket()/WSACleanup()) 。

此外:当应用进程调用 write时,内核从应用进程的缓冲区中拷贝所有数据到套接口的发送缓冲区。如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用进程的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠),即可看为阻塞。

同理,如果某个进程对一个阻塞的TCP套接口调用这些输入函数(比如read)之一,而且该套接口的接收缓冲区中没有数据可读,该进程将被投入睡眠,直到到达一些数据。


版权声明:本文为weixin_43304464原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。