Esempio di socket client sincrono

Mediante il seguente programma di esempio viene creato un client per la connessione a un server. Poiché il client viene generato con un socket sincrono, l'esecuzione dell'applicazione client viene sospesa fino a quando viene restituita una risposta dal server. Viene inviata una stringa al server e la stringa restituita dal server viene visualizzata nella console.

Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text

Public Class SynchronousSocketClient
    
    Public Shared Sub StartClient()
        ' Data buffer for incoming data.
        Dim bytes(1024) As Byte
        
        ' Connect to a remote device.
        Try
            ' Establish the remote endpoint for the socket.
            '    The name of the
            '   remote device is "host.contoso.com".
            Dim ipHostInfo As IPHostEntry = Dns.Resolve("host.contoso.com")
            Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
            Dim remoteEP As New IPEndPoint(ipAddress, 11000)
            
            ' Create a TCP/IP socket.
            Dim sender As New Socket(AddressFamily.InterNetwork, _
                SocketType.Stream, ProtocolType.Tcp)
            
            ' Connect the socket to the remote endpoint. Catch any errors.
            Try
                sender.Connect(remoteEP)
                
                Console.WriteLine("Socket connected to {0}", _
                    sender.RemoteEndPoint.ToString())
                
                ' Encode the data string into a byte array.
                Dim msg As Byte() = _
                    Encoding.ASCII.GetBytes("This is a test<EOF>")
                
                ' Send the data through the socket.
                Dim bytesSent As Integer = sender.Send(msg)
                
                ' Receive the response from the remote device.
                Dim bytesRec As Integer = sender.Receive(bytes)
                Console.WriteLine("Echoed test = {0}", _
                    Encoding.ASCII.GetString(bytes, 0, bytesRec))
                
                ' Release the socket.
                sender.Shutdown(SocketShutdown.Both)
                sender.Close()
            
            Catch ane As ArgumentNullException
                Console.WriteLine("ArgumentNullException : {0}", _
                    ane.ToString())
            Catch se As SocketException
                Console.WriteLine("SocketException : {0}", se.ToString())
            Catch e As Exception
                Console.WriteLine("Unexpected exception : {0}", e.ToString())
            End Try
        
        Catch e As Exception
            Console.WriteLine(e.ToString())
        End Try
    End Sub 'StartClient
    
    ' Entry point that delegates to C-style main Private Function.
    Public Overloads Shared Sub Main()
        System.Environment.ExitCode = _
            Main(System.Environment.GetCommandLineArgs())
    End Sub
    
    
    Overloads Public Shared Function Main(args() As [String]) As Integer
        StartClient()
        Return 0
    End Function 'Main
End Class 'SynchronousSocketClient

[C#]
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class SynchronousSocketClient {

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

        // Connect to a remote device.
        try {
            // Establish the remote endpoint for the socket.
            // The name of the
            // remote device is "host.contoso.com".
            IPHostEntry ipHostInfo = Dns.Resolve("host.contoso.com");
            IPAddress ipAddress = ipHostInfo.AddressList[0];
            IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);

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

            // Connect the socket to the remote endpoint. Catch any errors.
            try {
                sender.Connect(remoteEP);

                Console.WriteLine("Socket connected to {0}",
                    sender.RemoteEndPoint.ToString());

                // Encode the data string into a byte array.
                byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");

                // Send the data through the socket.
                int bytesSent = sender.Send(msg);

                // Receive the response from the remote device.
                int bytesRec = sender.Receive(bytes);
                Console.WriteLine("Echoed test = {0}",
                    Encoding.ASCII.GetString(bytes,0,bytesRec));

                // Release the socket.
                sender.Shutdown(SocketShutdown.Both);
                sender.Close();
                
            } catch (ArgumentNullException ane) {
                Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
            } catch (SocketException se) {
                Console.WriteLine("SocketException : {0}",se.ToString());
            } catch (Exception e) {
                Console.WriteLine("Unexpected exception : {0}", e.ToString());
            }

        } catch (Exception e) {
            Console.WriteLine( e.ToString());
        }
    }
    
    public static int Main(String[] args) {
        StartClient();
        return 0;
    }
}

Vedere anche

Esempio di socket server sincrono | Utilizzo di un socket client sincrono | Esempi di codice di socket