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