Esempio di socket server sincronoSynchronous Server Socket Example

Il programma di esempio seguente crea un server che riceve le richieste di connessione dai client.The following example program creates a server that receives connection requests from clients. Il server viene compilato con un socket sincrono, quindi l'esecuzione dell'applicazione server viene sospesa durante l'attesa di una connessione da un client.The server is built with a synchronous socket, so execution of the server application is suspended while it waits for a connection from a client. L'applicazione riceve una stringa dal client, visualizza la stringa nella console e quindi la restituisce al client.The application receives a string from the client, displays the string on the console, and then echoes the string back to the client. La stringa del client deve contenere la stringa "<EOF>" per segnalare la fine del messaggio.The string from the client must contain the string "<EOF>" to signal the end of the message.

Imports System  
Imports System.Net  
Imports System.Net.Sockets  
Imports System.Text  
Imports Microsoft.VisualBasic  

Public Class SynchronousSocketListener  

    ' Incoming data from the client.  
    Public Shared data As String = Nothing  

    Public Shared Sub Main()  
        ' Data buffer for incoming data.  
        Dim bytes() As Byte = New [Byte](1024) {}  

        ' Establish the local endpoint for the socket.  
        ' Dns.GetHostName returns the name of the   
        ' host running the application.  
        Dim ipHostInfo As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())  
        Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)  
        Dim localEndPoint As New IPEndPoint(ipAddress, 11000)  

        ' Create a TCP/IP socket.  
        Dim listener As New Socket(ipAddress.AddressFamily, _  
            SocketType.Stream, ProtocolType.Tcp)  

        ' Bind the socket to the local endpoint and   
        ' listen for incoming connections.  

        listener.Bind(localEndPoint)  
        listener.Listen(10)  

        ' Start listening for connections.  
        While True  
            Console.WriteLine("Waiting for a connection...")  
            ' Program is suspended while waiting for an incoming connection.  
            Dim handler As Socket = listener.Accept()  
            data = Nothing  

            ' An incoming connection needs to be processed.  
            While True  
                Dim bytesRec As Integer = handler.Receive(bytes)  
                data += Encoding.ASCII.GetString(bytes, 0, bytesRec)  
                If data.IndexOf("<EOF>") > -1 Then  
                    Exit While  
                End If  
            End While  
            ' Show the data on the console.  
            Console.WriteLine("Text received : {0}", data)  
            ' Echo the data back to the client.  
            Dim msg As Byte() = Encoding.ASCII.GetBytes(data)  
            handler.Send(msg)  
            handler.Shutdown(SocketShutdown.Both)  
            handler.Close()  
        End While  
    End Sub  

End Class 'SynchronousSocketListener  
using System;  
using System.Net;  
using System.Net.Sockets;  
using System.Text;  

public class SynchronousSocketListener {  

    // Incoming data from the client.  
    public static string data = null;  

    public static void StartListening() {  
        // Data buffer for incoming data.  
        byte[] bytes = new Byte[1024];  

        // Establish the local endpoint for the socket.  
        // Dns.GetHostName returns the name of the   
        // host running the application.  
        IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());  
        IPAddress ipAddress = ipHostInfo.AddressList[0];  
        IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);  

        // Create a TCP/IP socket.  
        Socket listener = new Socket(ipAddress.AddressFamily,  
            SocketType.Stream, ProtocolType.Tcp );  

        // Bind the socket to the local endpoint and   
        // listen for incoming connections.  
        try {  
            listener.Bind(localEndPoint);  
            listener.Listen(10);  

            // Start listening for connections.  
            while (true) {  
                Console.WriteLine("Waiting for a connection...");  
                // Program is suspended while waiting for an incoming connection.  
                Socket handler = listener.Accept();  
                data = null;  

                // An incoming connection needs to be processed.  
                while (true) {  
                    int bytesRec = handler.Receive(bytes);  
                    data += Encoding.ASCII.GetString(bytes,0,bytesRec);  
                    if (data.IndexOf("<EOF>") > -1) {  
                        break;  
                    }  
                }  

                // Show the data on the console.  
                Console.WriteLine( "Text received : {0}", data);  

                // Echo the data back to the client.  
                byte[] msg = Encoding.ASCII.GetBytes(data);  

                handler.Send(msg);  
                handler.Shutdown(SocketShutdown.Both);  
                handler.Close();  
            }  

        } catch (Exception e) {  
            Console.WriteLine(e.ToString());  
        }  

        Console.WriteLine("\nPress ENTER to continue...");  
        Console.Read();  

    }  

    public static int Main(String[] args) {  
        StartListening();  
        return 0;  
    }  
}  

Vedere ancheSee Also

Esempio di socket client sincronoSynchronous Client Socket Example
Uso di un socket server sincronoUsing a Synchronous Server Socket
Esempi di codice socketSocket Code Examples