2010-01-18 75 views
1

假設我有一個服務器套接字監聽端口號5010.當客戶端嘗試使用connect()API連接到此服務器套接字時,服務器接受accept()API中的套接字連接。服務器/客戶端使用套接字編程

accept()API返回一個用於服務器/客戶端連接的新套接字。現在,服務器和客戶端之間的所有數據傳輸均使用此新創建的套接字完成數據傳輸是否發生在相同的端口5010上。如果不是,由於accept()API返回新套接字時如何選擇端口?

回答

1

服務器和客戶端套接字之間的連接由元組(serverAddress, serverPort, clientAddress, clientPort)標識。服務器地址和服務器端口始終保持不變(顯然)。即使重複使用相同的地址(例如當同一臺機器上有多個客戶端時),客戶端也會分配(半)隨機「源」端口以避免衝突。

+0

這是否意味着如果有五個客戶端連接到服務器,則每個客戶端僅將數據發送到端口5010。服務器如何區分哪些客戶端數據即將到來? – cppdev 2010-01-18 17:46:10

+0

該元組的第二部分(客戶端IP,客戶端端口)。 – 2010-01-19 14:43:44

相關問題