je le code suivant pour l'application serveur:TCP Client Server Problème
TcpListener recSock = new TcpListener(400);
recSock.Start();
TcpClient client = recSock.AcceptTcpClient();
NetworkStream netStream = client.GetStream();
Byte[] data = new Byte[256];
int i;
while((i = netStream.Read(data, 0, data.Length)) != 0) {
string cmd = ASCIIEncoding.ASCII.GetString(data, 0, i);
Console.WriteLine(cmd);
if(cmd == "R") {
RestartScheduler();
}
}
client.Close();
Et le client ressemble à:
TcpClient client = new TcpClient();
client.Connect("VM-SCHEDULER", 400);
NetworkStream netStream = client.GetStream();
Byte[] data = ASCIIEncoding.ASCII.GetBytes("R");
netStream.Write(data, 0, data.Length);
netStream.Flush();
client.Close();
Tout est bien la première fois que le client se connecte le "R" La commande est lue et la méthode RestartScheduler() est appelée, mais toutes les commandes suivantes échouent jusqu'à ce que le serveur soit redémarré.
J'ai utilisé telnet pour me connecter au serveur après la première tentative et il est toujours en écoute sur le port.
Où vais-je mal?
EDIT:
En fait ce que je suis en train d'accomplir est que le serveur écoutera toujours, un client se connecte ensuite envoyer la commande « R » puis fermez la connexion. Le client doit pouvoir se connecter au serveur à tout moment pour émettre la commande. Il n'y aura qu'un seul client à la fois.
Dans ce cas, s'il vous plaît voir ma réponse à jour. – badbod99