I recently started learning client/server communication and I found nice tutorial HERE. I've modified it a bit, so that client sends message to server, server changes the message to all capital letters and should send it back to client.
I don't undestand why only the 3rd way of sending data back to client works ok. Seems to me that I have to use another buffer to send data to client, not the one I'm receiving data to.
Can anyone try to explain this ? (It's been bothering me since month or so
Client code
Console.WriteLine("Type 'exit' to exit");
while (true)
{
Console.Write("SEND: ");
buffer = encoder.GetBytes(Console.ReadLine());
if (encoder.GetString(buffer) == "exit")
{ break; }
Console.WriteLine("SENDING: " + encoder.GetString(buffer));
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Read(buffer, 0, buffer.Length);
Console.WriteLine("REPLY: " + encoder.GetString(buffer));
}
Server code
while (true)
{
bytesRead = 0;
try
{
bytesRead = clientStream.Read(message, 0, 4096);
}
catch
{ break; }
if (bytesRead == 0)
{ break; }
Console.WriteLine("RECEIVED: " + encoder.GetString(message, 0, bytesRead));
//REPLY
// 1
/* sMessage = encoder.GetString(message, 0, bytesRead);
sMessage = sMessage.ToUpper();
message = encoder.GetBytes(sMessage);
Console.WriteLine("REPLY: " + encoder.GetString(message, 0, bytesRead));
clientStream.Write(message, 0, bytesRead);*/
//2
/* message = encoder.GetBytes(encoder.GetString(message,0,bytesRead).ToUpper());
Console.WriteLine("REPLY: " + encoder.GetString(message, 0, bytesRead));
clientStream.Write(message, 0, bytesRead);*/
//3
byte[] buffer = encoder.GetBytes(encoder.GetString(message, 0, bytesRead).ToUpper());
clientStream.Write(buffer, 0, buffer.Length);
Console.WriteLine("REPLY: " + encoder.GetString(buffer, 0, buffer.Length));
}
This post has been edited by Teres: 02 December 2009 - 04:43 AM

New Topic/Question
Reply




MultiQuote





|