echo server/client
This commit is contained in:
@@ -20,18 +20,34 @@ internal class Server
|
||||
|
||||
while (true)
|
||||
{
|
||||
byte[] buffer = new byte[256];
|
||||
int totalBytes = clientSocket.Receive(buffer);
|
||||
if (totalBytes < 1)
|
||||
byte[] headerBuffer = new byte[2];
|
||||
int headerReceive = clientSocket.Receive(headerBuffer);
|
||||
if (headerReceive < 1)
|
||||
{
|
||||
Console.WriteLine("Disconnecting client...");
|
||||
return;
|
||||
}
|
||||
else if (headerReceive == 1)
|
||||
{
|
||||
clientSocket.Receive(headerBuffer, 0, 1, SocketFlags.None);
|
||||
}
|
||||
|
||||
string str = Encoding.UTF8.GetString(buffer);
|
||||
short dataSize = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(headerBuffer));
|
||||
byte[] dataBuffer = new byte[dataSize];
|
||||
int dataReveiced = 0;
|
||||
while (dataReveiced < dataSize)
|
||||
{
|
||||
int n = clientSocket.Receive(dataBuffer, dataReveiced, dataSize - dataReveiced, SocketFlags.None);
|
||||
dataReveiced += n;
|
||||
}
|
||||
|
||||
string str = Encoding.UTF8.GetString(dataBuffer);
|
||||
Console.WriteLine(str);
|
||||
|
||||
clientSocket.Send(buffer);
|
||||
byte[] echoBuffer = new byte[2 + dataBuffer.Length];
|
||||
Array.Copy(headerBuffer, 0, echoBuffer, 0, headerBuffer.Length);
|
||||
Array.Copy(dataBuffer, 0, echoBuffer, 2, dataBuffer.Length);
|
||||
clientSocket.Send(echoBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user