一:TCP/IP协议的应用一般采用客户/服務器模式因此在实际应用中,必须有客户和服务器两个进程并且首先启动服务器,其系统调用时序图如下 面向连接的协议(如TCP)的套接字系统调用如图2.1所示:
注意:服务器必须首先启动,直到它执行完accept()调用进入等待状态后,方能接收客户请求假如客户在此前启动,则connect()将返回出错代码连接不成功。
这里直接上C++代码:
//2.socket--套接字(相当于应用程序与外界进行通信的接口)
//4.监听通知TCP,服务器准备好接收连接
②: 无连接协议(UDP)的套接字调用如图2.2所示
无连接服务器也必须先启动否则客户请求传不到服务进程。无连接客户不调用connect()因此在数据發送之前,客户与服务器之间尚未建立完全相关但各自通过socket()和bind()建立了半相关。发送数据时发送方除指定本地套接字号外,还需指定接收方套接字号从而在数据收发过程中动态地建立了全相关。
//2.创建socket套接字socket相当于进程的接口,用于与外界进行通信
/*通过函数获取IP地址*/
//创建socket时有两个属性:阻塞态(默认)和非阻塞态===改变阻塞状态是通过函数
//定义结构体来接收Client地址信息
用UDP协议的时候启动好以后,就會在4001监听了
但是TCP协议的客户端模式下,你是作为一个客户端主动连接服务器的(目标IP+目标端口127.0.0.1: 4001)。127.0.0.1(也就是本机)的4001端口必须打开处于偵听状态才可以连接)。
应该这么操作:先创建服务器用TCP协议的服务器模式,打开4001端口
再打开一个程序,用TCP协议的客户端模式去连127.0.0.1的4001端口
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。