2011-09-19 12 views
-1

我有一個客戶端應用程序,創建一個隨機本地端口的套接字,我不能改變這個應用程序的代碼,我想設置一系列他可以從我的C#應用。可能嗎?謝謝!設置一個免費的本地端口範圍到應用程序

+0

沒有人可以連接到使用隨機端口號的偵聽器。他們無法猜測正確的端口使用。 –

+0

對不起,更正。我的意思是客戶端應用程序使用隨機本地端口,並且我想設置一系列他可以使用的端口。但我不能更改此客戶端應用程序的代碼 – Kracken

回答

0

因此,客戶端將嘗試使用各種端口號中的任何一個連接到您的應用程序。你不知道他們將使用哪個套接字,但你可以知道他們將使用這個範圍之一。

如果是這樣的話,你可以做兩件事情之一:

  1. 如果您的應用只運行過有這一個客戶端交互的計算機,然後簡單地設置一個的TcpListener(或其他套接字偵聽器)偵聽您在所有端口上的地址。這是有風險的;如果其他某臺計算機試圖請求網頁,或者嘗試設置此計算機上的網絡時間,則您的應用可能會錯誤地攔截這些連接。
  2. 如果您確實需要客戶端可以連接的一系列可用端口,那麼我將使用for循環來設置一組TcpListeners,每個端口都需要連接一個端口。

瞭解這是用於TCP。 UDP(另一種通用協議)是無狀態的,這意味着連接永遠不會在客戶端和服務器之間創建;客戶端只是向服務器和端口喊一些東西,並祈禱服務器正在收聽,接收和理解消息。

+0

謝謝!但我不能更改客戶端應用程序代碼,我想也許使用一些API我可以做到這一點(當他在隨機端口中創建套接字時,爲客戶端應用程序設置可用端口範圍),也許是免費本地端口的鉤子列表 – Kracken

+0

您是否有任何信息關於客戶端應用程序將使用的端口範圍?我很難相信應用程序會在100%完全隨機的端口上通信,包括通常保留爲80(通過HTTP的網絡服務器通信)的端口。一旦您知道客戶端將嘗試連接,您可以在相同的端口上收聽(即使您必須在60k +端口上收聽)。這絕不是理想的,但這種情況並沒有。 – KeithS

相關問題