之前一直有一个疑问,SOCKET ACCEPT后产生的新端口端口号和原来LISTEN时候的端口号是一致的吗?经过试验的确是一致的,那么一致的情况下又怎么区分数据呢?
原来我一直忽略了SOCKET的标识,也就是他的身份证。一个SOCKET的标识是一个五元组(服务端IP,服务端端口号,客户端IP,客户端端口号,所用协议),而我们可以理解,在LISTEN的时候指定了服务端IP,服务端端口号和所用协议,但是客户端IP和客户端端口号是通配符。在ACCEPT之后客户端IP和端口号是建立连接的客户端相应的数据,所以ACCEPT和LISTEN的这两个数据的不同导致了SOCKET的身份证不同,所以他们俩是不同的两个SOCKET,但是共用同一个服务器端口号。