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

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