echo server/client

main
syneffort 2 years ago
parent 8e51b3d046
commit adf105be2d
  1. 45
      Echo/Client/Client.cs
  2. 26
      Echo/Server/Server.cs

@ -15,23 +15,52 @@ internal class Client
while (true)
{
string str = Console.ReadLine();
string str = Console.ReadLine() ?? string.Empty;
if (str == "exit")
return;
byte[] buffer = Encoding.UTF8.GetBytes(str);
socket.Send(buffer);
byte[] newBuffer = new byte[2 + buffer.Length];
byte[] dataSize = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((short)buffer.Length));
byte[] buffer2 = new byte[256];
int byteRead = socket.Receive(buffer2);
if (byteRead < 1)
Array.Copy(dataSize, 0, newBuffer, 0, dataSize.Length);
Array.Copy(buffer, 0, newBuffer, 2, buffer.Length);
socket.Send(newBuffer);
byte[] headerBuffer = new byte[2];
int headerReceive = socket.Receive(headerBuffer);
if (headerReceive < 1)
{
Console.WriteLine("Disconnecting server...");
Console.WriteLine("Disconnecting client...");
return;
}
else if (headerReceive == 1)
{
socket.Receive(headerBuffer, 1, 1, SocketFlags.None);
}
short totalDataSize = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(headerBuffer));
byte[] dataBuffer = new byte[totalDataSize];
int dataReceived = 0;
while (dataReceived < totalDataSize)
{
int n = socket.Receive(dataBuffer, dataReceived, totalDataSize - dataReceived, SocketFlags.None);
dataReceived += n;
}
string receivedMessage = Encoding.UTF8.GetString(dataBuffer);
Console.WriteLine($"[Received] {receivedMessage}");
//byte[] buffer2 = new byte[256];
//int byteRead = socket.Receive(buffer2);
//if (byteRead < 1)
//{
// Console.WriteLine("Disconnecting server...");
// return;
//}
string str2 = Encoding.UTF8.GetString(buffer2);
Console.WriteLine($"[Receive] {str2}");
//string str2 = Encoding.UTF8.GetString(buffer2);
//Console.WriteLine($"[Receive] {str2}");
}
}
}

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

Loading…
Cancel
Save