as you know,一個socket是由一個五元組來唯一標示的,即(協議,server_ip, server_port, client_ip, client_port)。只要該五元組中任何一個值不同,則其代表的socket就不同。這里忽略協議的區別,在同一協議的基礎上,服務器端的listen socket的端口可以看成(server_ip, server_port, ***, ***),其中***是通配符,它跟任何一個client_ip, client_port值都不同,可以簡單看成是(0,0)對,當然實現不是這樣的。這樣在服務器端accept之后,返回的連接socket的四元組就是(server_ip, server_port, client_ip, client_port),這里的client_ip,client_port因連接的客戶端的不同而不同。所以accept返回的socket和listen socket是不同的,不同之處就在于四元組中的客戶端ip和port,而服務器端的server_ip和server_port還是相同的,也就是accpet()函數返回的新的socket描述符的端口和listen端口是一樣的。可以使用getsockname()函數來查看它們之間的不同。