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