private void Receive(){
Socket client; // сокет для обмена данными.
Listener = new TcpListener(LocalPort);
Listener.Start(); // начали слушать
Console.WriteLine("Waiting connections [" + Convert.ToString(LocalPort) + "]...");
try{
client = Listener.AcceptSocket();
} catch {
return;
}
string data;
byte[] cldata = new byte[1024]; // буфер данных
int size = 0;
while (true)
{
try
{
size = client.Receive(cldata); // попытка чтения данных
}
catch
{
}
try
{
if (size > 0)
{
data = Encoding.ASCII.GetString(cldata).TrimEnd('\0');
Console.WriteLine("<" + data);
if (data == "CLOSE") // если CLOSE – вырубимся
{
ClientSock.Send(Encoding.ASCII.GetBytes("Closing the server..."));
ClientSock.Close();
Listener.Stop();
Console.WriteLine("Server closed. Reason: client wish! Type EXIT to quit the application.");
ServThread.Abort();
return;
}
else
{
client.Send(Encoding.ASCII.GetBytes("Your data: " + data));
}
Array.Clear(cldata, 0, 1024);
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
client.Sockt.Close(); // ну эт если какая хрень..
// Listener.Stop();
// Console.WriteLine("Server closing. Reason: client offline. Type EXIT to quit the application.");
// ServThread.Abort();
}
}
}
size = client.Receive(cldata); // size равен размерности массива cldata, а не количеству принятых байт. Как получить количество принятых байт?