首先需要说明的一点是:
accept()不是监听,accept()是接受新连接。
listen()是进入监听状态,表示愿意接收连接请求。
listen之后有连接请求就将其放到队列中,accept()时把新连接请求从队列中取出,建立新的socket。
然后就是accept()与listen()是属于tcp/ip协议的,而在udp/ip协议中,不需要ACCEPT()或者LISTEN()来监听等待。
具体实现方式:
在tcp/ip协议中,先创建一个套接字(create),然后绑定(bind),listen---->当有数据进来的时候在使用newsock = accept(oldsock,…)的方式创建一个新的套接字,这样可以使用这个新的套接字与客户端进行send和recv操作。
另外,listen()维护两个队列,一个是未完成三次握手的,一个是已完成三次握手的,accept()是从已完成三次握手的队列中取出一个而已!