我開發(fā)了一個基本的控制臺應用程序,它將作為服務器-客戶端工作。我的一般工作流程是,服務器啟動客戶端連接到服務器,一旦客戶端發(fā)送一些東西,服務器將接收它并將其發(fā)送給所有客戶端。目前我可以用我的代碼來做到這一點,但我的問題是當我發(fā)回時我已經(jīng)測試了 Socket.RemoteEndPoint 并且我看到了像 65xxx 這樣的端口。就像我的第一個客戶有 65020,第二個 65021 等等。我想知道為什么會發(fā)生這種情況,因為我使用 9001 端口連接并在我的計算機上收聽 9001 端口。我做了一些研究,但找不到我的問題的解決方案。為什么我在使用 Socket.RemoteEndPoint 時會得到這些端口號?對我來說沒關(guān)系,因為我在測試時不使用防火墻或任何東西,即使客戶端從其他端口連接它' 只要它有效,我就可以,但是如果我有防火墻并且我只打開 9001 端口怎么辦?那么我的基于客戶端-服務器的程序會起作用嗎?
1 回答

MMMHUHU
TA貢獻1834條經(jīng)驗 獲得超8個贊
就該機器上的服務器/防火墻而言,通常重要的是服務器端口。您通常不會根據(jù)客戶端的端口應用任何過濾,正如我在評論中所說,它通常是一個ephemeral port。在大多數(shù)情況下,客戶端代碼不會指定本地端口或 IP 地址,而是讓操作系統(tǒng)選擇適當?shù)闹怠?/p>
在Socket
類的LocalEndPoint
和RemoteEndPoint
使用“本地”和“遠程”是指“自本代碼正在運行的機器的視角”“是誰發(fā)起的連接VS誰是連接到”,不是。
因此,在服務器上,LocalEndPoint
將為您提供有關(guān)連接服務器端的信息,并為您提供有關(guān)連接RemoteEndPoint
客戶端的信息。不管是誰發(fā)起了連接。
- 1 回答
- 0 關(guān)注
- 387 瀏覽
添加回答
舉報
0/150
提交
取消