0
我想多次啓動我的程序,並且每個實例都嘗試使用TCP連接到同一個服務器端口。我打算讓第一個連接,其餘的客戶端應該嘗試連接到不同的端口。TCP端口競爭狀態?
我用這個代碼連接:
TcpClient tcp;
StreamReader streamReader;
StreamWriter streamWriter;
bool success=false;
while (!success) {
try
{
tcp = new TcpClient(Hostname, currentPort);
streamReader = new StreamReader(tcp.GetStream());
streamWriter = new StreamWriter(tcp.GetStream());
success=true;
} catch {
// wait a bit...
}
}
現在第一個將成功地連接,但第二個沒有得到一個例外,但也沒有連接。我怎樣才能確定一個程序是否真的連接? tcp.Connected屬性不起作用。
你應該看到這個帖子。 http://stackoverflow.com/questions/570098/in-c-how-to-check-if-a-tcp-port-is-available – Nix 2011-04-16 15:01:25
@Nix:是的,我已經使用此代碼,但仍然存在兩個程序在獲得端口可用信息後嘗試連接的競態條件。 – Michael 2011-04-16 15:07:00