echo server/client

This commit is contained in:
2023-02-06 15:02:54 +09:00
parent 8e51b3d046
commit adf105be2d
2 changed files with 58 additions and 13 deletions

View File

@@ -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);
}
}
}