Beste mensen,
Ik heb een server applicatie waarmee ik verbinding wil maken met één of meer clients d.m.v TCP IP. In de server heb ik een procedure waarmee ik berichten kan sturen naar de clients (altijd naar alle clients die verbonden zijn). Berichten met de clients naar de server sturen gaat goed en komen aan, echter als ik probeer wat terug te sturen komt er niets aan bij de clients.
Dit is de code van de server, deze itereert door een arraylist met TcpClients die gevuld wordt als de client zich aanmeldt (en dit werkt, de Clients collectie heeft TcpClients):
public void SendMessageToAllClients(string msg)
{
foreach (TcpClient Client in Clients)
{
NetworkStream clientStream = Client.GetStream();
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] buffer = encoder.GetBytes(msg);
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}
}
en dit is de ontvangende procedure op de client:
private void ReceiveMessages()
{
// Receive the response from the server
srReceiver = new StreamReader(tcpServer.GetStream());
while (tcpServer.Connected)
{
this.Invoke(new ParseMsgCallback(this.ParseMsg), new object[] { srReceiver.ReadLine() });
}
}
Het wachten op berichten wordt zowel op de client als de serverkant in een aparte thread gedaan. Het probleem is echter dat deze procedure aan de clientkant wacht to sintjuttemis en er niets gebeurt als de server berichten stuurt. Als ik de client debug zie ik dat er wel een open connectie is met de server (met de juiste IP, port etc). Dat de connectie juist is wordt bevestigd doordat ik met de client wel gewoon zoveel berichten naar de server kan sturen als ik wil.
Wie weet raad?
Ik heb een server applicatie waarmee ik verbinding wil maken met één of meer clients d.m.v TCP IP. In de server heb ik een procedure waarmee ik berichten kan sturen naar de clients (altijd naar alle clients die verbonden zijn). Berichten met de clients naar de server sturen gaat goed en komen aan, echter als ik probeer wat terug te sturen komt er niets aan bij de clients.
Dit is de code van de server, deze itereert door een arraylist met TcpClients die gevuld wordt als de client zich aanmeldt (en dit werkt, de Clients collectie heeft TcpClients):
public void SendMessageToAllClients(string msg)
{
foreach (TcpClient Client in Clients)
{
NetworkStream clientStream = Client.GetStream();
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] buffer = encoder.GetBytes(msg);
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}
}
en dit is de ontvangende procedure op de client:
private void ReceiveMessages()
{
// Receive the response from the server
srReceiver = new StreamReader(tcpServer.GetStream());
while (tcpServer.Connected)
{
this.Invoke(new ParseMsgCallback(this.ParseMsg), new object[] { srReceiver.ReadLine() });
}
}
Het wachten op berichten wordt zowel op de client als de serverkant in een aparte thread gedaan. Het probleem is echter dat deze procedure aan de clientkant wacht to sintjuttemis en er niets gebeurt als de server berichten stuurt. Als ik de client debug zie ik dat er wel een open connectie is met de server (met de juiste IP, port etc). Dat de connectie juist is wordt bevestigd doordat ik met de client wel gewoon zoveel berichten naar de server kan sturen als ik wil.
Wie weet raad?