2014-02-07 303 views
0

當我使用Winsock創建一個C++程序並向主機名發送()一個HTTP請求數據包(例如:www.blah.com在端口80上運行的223.224.245.233)和HTTP響應通過recv()給我回來,爲什麼我的數據包的接收者需要綁定一個套接字到一個端口與我交談,但是我不知道?通過套接字和端口發送和接收數據

是因爲我最初發送了一個數據包,並且在那個數據包中包含了使我們無需將套接字綁定到某個端口就可以將數據包發回給我(響應)的信息?

我想知道爲什麼多臺計算機交談每個不需要綁定到某些端口的套接字。

我認爲計算機通信是像這樣: (服務端口80在223.224.245.233)發送分組(服務對在223.224.245.234端口94) (服務上在223.224.245.234端口94)從接收到的分組(在223.224.245.233上的端口94服務)

回答

1

爲何我的包的接收器需要一個套接字綁定到一個端口來跟我說話

事實並非如此。它需要將套接字綁定到端口以偵聽傳入連接。然後你連接到它,然後它接受一個連接的套接字,然後它與你談話。

,但我不

當您連接有一個自動綁定。

+0

啊我看到了,這是否被認爲是TCP連接? –

+0

是的,這是TCP的工作原理。 – EJP

+0

在UDP情況下,是否仍然需要監聽套接字? –