【发布时间】:2011-08-06 22:30:21
【问题描述】:
我想多次启动我的程序,每个实例都尝试通过 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 属性不起作用。
【问题讨论】:
-
你应该看到这篇文章。 stackoverflow.com/questions/570098/…
-
@Nix:是的,我已经在使用此代码,但仍然存在竞争条件,因为两个程序在获得端口可用的信息后尝试连接。
标签: c# tcp client port race-condition