Share via


Synchronous Client Socket Example

The following example program creates a client that connects to a server. The client is built with a synchronous socket, so execution of the client application is suspended until the server returns a response. The application sends a string to the server and then displays the string returned by the server on the 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;
    }
}

See Also

Synchronous Server Socket Example | Using a Synchronous Client Socket | Socket Code Examples