Je veux démarrer mon programme plusieurs fois et chaque instance essaie de se connecter avec TCP au même port de serveur. Ce que j'ai l'intention est de laisser le premier se connecter et les autres clients restants devraient essayer de se connecter à un port différent.Condition de concurrence du port TCP?
J'utiliser ce code pour se connecter:
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...
}
}
Maintenant, le premier se connecter avec succès, mais la seconde on n'obtient pas une exception, mais aussi n'est pas connecté. Comment puis-je déterminer si un programme est vraiment connecté? La propriété tcp.Connected n'a pas fonctionné.
Vous devriez voir ce post. http://stackoverflow.com/questions/570098/in-c-how-to-check-if-a-tcp-port-is-available – Nix
@Nix: Oui, j'utilise déjà ce code mais il y a encore une condition de concurrence car les deux programmes tentent de se connecter après avoir obtenu l'information que le port est disponible. – Michael