Неправильное получение принятых байт Socket Receive()
От: vovanmain  
Дата: 03.06.10 22:02
Оценка:
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, а не количеству принятых байт. Как получить количество принятых байт?
c# receive() socket
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.