Программирование сокетов в C # Это считается опросом? - PullRequest
0 голосов
/ 17 мая 2019

, поэтому я пробовал программировать сокеты в C #, используя код, найденный в Интернете. При взгляде на этот код из https://www.geeksforgeeks.org/socket-programming-in-c-sharp/

public static void ExecuteServer() 
{ 
    // Establish the local endpoint  
    // for the socket. Dns.GetHostName 
    // returns the name of the host  
    // running the application. 
    IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName()); 
    IPAddress ipAddr = ipHost.AddressList[0]; 
    IPEndPoint localEndPoint = new IPEndPoint(ipAddr, 11111);   
    // Creation TCP/IP Socket using  
    // Socket Class Costructor 
    Socket listener = new Socket(ipAddr.AddressFamily, 
                 SocketType.Stream, ProtocolType.Tcp);   
    try {           
        // Using Bind() method we associate a 
        // network address to the Server Socket 
        // All client that will connect to this  
        // Server Socket must know this network 
        // Address 
        listener.Bind(localEndPoint);   
        // Using Listen() method we create  
        // the Client list that will want 
        // to connect to Server 
        listener.Listen(10);   
        while (true) {               
            Console.WriteLine("Waiting connection ... ");   
            // Suspend while waiting for 
            // incoming connection Using  
            // Accept() method the server  
            // will accept connection of client 
            Socket clientSocket = listener.Accept();   
            // Data buffer 
            byte[] bytes = new Byte[1024]; 
            string data = null;   
            while (true) {   
                int numByte = clientSocket.Receive(bytes);                   
                data += Encoding.ASCII.GetString(bytes, 
                                           0, numByte);                                              
                if (data.IndexOf("<EOF>") > -1) 
                    break; 
            }   
            Console.WriteLine("Text received -> {0} ", data); 
            byte[] message = Encoding.ASCII.GetBytes("Test Server");   
            // Send a message to Client  
            // using Send() method 
            clientSocket.Send(message);   
            // Close client Socket using the 
            // Close() method. After closing, 
            // we can use the closed Socket  
            // for a new Client Connection 
            clientSocket.Shutdown(SocketShutdown.Both); 
            clientSocket.Close(); 
        } 
    }       
    catch (Exception e) { 
        Console.WriteLine(e.ToString()); 
    } 
} 
} 
} 

Мне было интересно, если порция

while (true) { 
                int numByte = clientSocket.Receive(bytes); 
                data += Encoding.ASCII.GetString(bytes, 0, numByte);                                   
                if (data.IndexOf("<EOF>") > -1) 
                    break; 
            } 

считается методом опроса, а также причиной, по которой мы не просто используем

int numByte = clientSocket.Receive(bytes);
data = Encoding.ASCII.GetString(bytes, 0, numByte);

Я пробовал вышеупомянутое, и, кажется, работает так же хорошо. Так есть ли причина, по которой мы используем бесконечный цикл while, который зависит от текста, чтобы остановить чтение? Я нашел много источников, которые, кажется, используют этот метод. Почему это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...