J'essaye de créer un programme afin d'envoyer et de recevoir des chaînes d'un autre ordinateur sur le réseau. Il n'y aura qu'une seule paire d'ordinateurs connectés ensemble à travers le programme. La majeure partie est faite et fonctionne parfaitement sauf pour la première connexion. La première connexion peut être établie seulement si les deux ordinateurs ouvrent le programme en même temps. Parce que le serveur sur l'autre ordinateur ne sera pas en cours d'exécution, la connexion sera refusée. Voici le code:En attente de connexion sur le réseau
public MultiplayerState2(Game1 game)
{
this.game = game;
localIp = GetLocalIP();
server = new TcpListener(IPAddress.Parse(localIp), localPort);
server.Start();
networkingThread = new Thread(getData);
networkingThread.Start();
clientThread = new Thread(connectClient);
clientThread.Name = "Connect Client";
clientThread.Start();
}
void connectClient()
{
while (client == null)
{
try
{
client = new TcpClient(remoteIp, remotePort);
Console.WriteLine("Connected");
clientThread.Abort();
}
catch
{
Console.WriteLine("Waiting for partner");
}
}
}
Ici, connectClient
est censé attendre une connexion d'un ordinateur. Mais là, la seule chose que je reçois en sortie est waiting for partner
. Est-ce la bonne façon d'attendre une connexion? Et si oui, pourquoi ça ne marche pas?
Quelle est l'exception levée? – FodderZone
@FodderZone Il s'agissait d'une exception SocketException provoquée par le fait que le 'TcpListener.Start' n'était pas appelé au moment où le client essayait de se connecter. – user26830
Veuillez attraper le SocketException et rechercher/passer le ErrorCode. http://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx – FodderZone