echo server/client
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
string str2 = Encoding.UTF8.GetString(buffer2);
|
||||
Console.WriteLine($"[Receive] {str2}");
|
||||
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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user