Ik schrijf momenteel een client (in .net) die over een TCP connectie een aantal plain text commando's (van max 255 bytes) moet versturen naar een oude server applicatie.
Ik gebruik daarvoor deze code (versimpeld):
Tijdens debuggen werkt dit perfect, maar zodra de applicatie gecompileerd is dan blijft hij hangen op 'stream.Read'. m.a.w. hij lijkt geen data terug te geven. Als ik een timeout van een seconde of 10 op geef, dan krijg ik de volgende exception:
Verder stoeien met timeouts en dergelijke mocht niet baten; belangrijkste vraag is: waarom werkt hij wel perfect in Debug mode, maar niet meer zodra hij gecompileerd is.
Ik gebruik daarvoor deze code (versimpeld):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| string message = "message"; string response = ""; TcpClient client = new TcpClient(); client.Connect(IPAddress, Port); NetworkStream stream = client.GetStream; if (stream.CanRead && stream.CanWrite) { byte[] sendBytes = Encoding.ASCII.GetBytes(message); stream.Write(sendBytes, 0, sendBytes.Length); byte[] receiveBytes = new byte[client.ReceiveBufferSize + 1]; stream.Read(receiveBytes, 0, client.ReceiveBufferSize); response = Encoding.ASCII.GetString(receiveBytes); } |
Tijdens debuggen werkt dit perfect, maar zodra de applicatie gecompileerd is dan blijft hij hangen op 'stream.Read'. m.a.w. hij lijkt geen data terug te geven. Als ik een timeout van een seconde of 10 op geef, dan krijg ik de volgende exception:
code:
1
| System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond |
Verder stoeien met timeouts en dergelijke mocht niet baten; belangrijkste vraag is: waarom werkt hij wel perfect in Debug mode, maar niet meer zodra hij gecompileerd is.