Int bind(SOCKET s,strut sockaddr_in* name,intnamelen); 内容来自www.paper51.com 成功创建套接字后,下面就应该选定本机通信的接口对象,首先一台计算机可能有多张网卡,每个网卡都有一个独立的IP地址,其次,不同的通信程序可以使用不同的端口号,这样一台计算机上可以有几个程序同时使用一个IP进行通信,而不互相干扰,IP地址与端口号的关系就好像电话总机号码与分机号码的关系。 内容来自www.paper51.com 5.4. listen http://www.paper51.com
Int listen(SOCKET s,int backlog); 内容来自www.paper51.com 对于TCP类型的服务器套接字,在完成bind操作后,下一步就应该等待客户机的连接请求。Listen就是把套接字设置成这种状态。 http://www.paper51.com 5.5. accept 内容来自www.paper51.com SOCKET accept(SOCKET s, structsockaddr_in*addr,int*addrlen); 内容来自论文无忧网 www.paper51.com Accept在接收连接请求后,会为这个连接建立一个新的套接字,该套接字负责和客户端进行通信。需要指出的是,套接字与监听套接字的端口是相同的。当accept函数返回时,监听套接字将会继续等待其他连接请求,而新套接字才是与客户端进行通信的实际套接字。所以一般将参数中的SOCKET称作监听套接字,它只负责接受连接而不负责通话;而对于accept函数返回的SOCKET,把它称作会话套接字,它只负责与客户端通话。 http://www.paper51.com 5.6. connect http://www.paper51.com 对于TCP类型的客户套接字,在创建完套接字后,程序就可以直接调用connect函数向服务器提出连接请求。 copyright paper51.com
5.7. send/recv 内容来自论文无忧网 www.paper51.com 从面向连接的socket发送和接收数据 http://www.paper51.com
5.8. closesocket 内容来自www.paper51.com Closesocket (SOCKET s); 内容来自论文无忧网 www.paper51.com 通信结束关闭套接字。 copyright paper51.com 5.9. WSACleanup 内容来自www.paper51.com 终止Windows Sockets DLL的使用。 copyright paper51.com
6. TCP套接字的调用过程 http://www.paper51.com TCP套接字之间的连接过程可以分为三个主要的步骤:服务器监听、客户端请求连接、连接确认。 http://www.paper51.com 服务器端监听是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 copyright paper51.com 客户端请求连接是指客户端的套接字提出连接,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器端的套接字,指出服务器端的套接字的地址和端口,然后向服务器端套接字提出连接请求,服务器在接收到请求后给予回复。 内容来自www.paper51.com 连接确认指服务器收到客户端套接字的连接请求,响应客户端套接字的请求。建立一个新线程通知客户端已经连接,服务器端套接字继续等待客户端的请 求连接。调用过程如下图所示: paper51.com 服务器端 客户端 copyright paper51.com http://www.paper51.com copyright paper51.com |