为什么TCP编程里要设计成分为欢迎套接字和连接套接字?
济南及周边地区,私人订制 女士spa,异性spa 情侣spa ➕微 411901410 @送精品护理体验
具体过程是 服务器先开始创建socket(监听套接字),然后进行bind,listen,最后进行accept,accept返回得到已连接的套接字(此套接字区别于监听套接字)。
自然要问的是:为什么要有两种套接字?
原因很简单,如果使用一个描述符的话,那么它的功能太多,使得使用很不直观,同时在内核确实产生了一个这样的新的套接字描述符,代表与客户端建立的连接,然而监听套接字依然在服务器上原来的那个端口上listen()。
总结一下就是:监听套接字只负责接收连接请求,将I/O操作转接给已连接套接字上,来进行read,write操作。
自然要问的是:为什么要有两种套接字?
原因很简单,如果使用一个描述符的话,那么它的功能太多,使得使用很不直观,同时在内核确实产生了一个这样的新的套接字描述符,代表与客户端建立的连接,然而监听套接字依然在服务器上原来的那个端口上listen()。
总结一下就是:监听套接字只负责接收连接请求,将I/O操作转接给已连接套接字上,来进行read,write操作。
啥叫欢迎套接字? 你说的是监听套接字?
首先,TCP是面向连接的,而UDP是无连接的,也就是说,UDP传送数据前不需要建立连接,而TCP需要。
而传输层为进程间通信服务的,这也是端口存在的意义,而一个socket只能绑定一个端口,这个端口绑定的是用于监听的套接字(listen)。因为TCP接收数据前需要建立连接,所以数据应该分为两种,一种是请求建立连接的,另外一种是已经建立好连接后传输的数据。当有请求连接的数据到达,用专门用来处理连接的accept函数为该连接创建一个连接套接字,这样的话,建立好连接以后下次数据过来,就可以直接把数据放到TCP协议栈维护的数据缓冲区了。当有另外多个连接过来,反复上述过程,就可以建立多个客户端连接进行通信了。
谢邀。济南及周边地区,私人订制 女士spa,异性spa 情侣spa ➕微 411901410 @送精品护理体验
<< 上一篇
下一篇 >>
网友留言(0条)