Home / Programmazione / C# - Asp.NET / Client Socket in C#
Mattepuffo

Client Socket in C#

Client Socket in C#

Qualche giorno fa ho scritto un articolo che riguardava le socket in C#, e nello specifico la parte server.

Oggi vediamo il client.

Ha un solo metodo che richiede tre parametri: l'indirizzo dell'host, la porta e il messaggio da inviare.

Ricordo che il messaggio verrà visualizzato dal server.

Il metodo è questo:

class Client
    {
        public void socketClient(string host, int port, string message)
        {
            int MAXBUFFER = 1024;
            byte[] receivedBytes = new byte[MAXBUFFER];
            IPHostEntry ipHost = Dns.GetHostEntry(host);
            IPAddress ipAddress = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
            Console.WriteLine("CLIENT STARTED");
            Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sender.Connect(ipEndPoint);
            Console.WriteLine("CONNECTED to {0}", sender.RemoteEndPoint);
            string sendingMessage = message;
            byte[] forwardMessage = Encoding.ASCII.GetBytes(sendingMessage + "\n");
            sender.Send(forwardMessage);
            int totBytesReceived = sender.Receive(receivedBytes);
            Console.WriteLine("REPLY FROM SERVER {0}", Encoding.ASCII.GetString(receivedBytes, 0, totBytesReceived));
            sender.Shutdown(SocketShutdown.Both);
            sender.Close();
            Console.ReadLine();
            return;
        }
    }

Con gli oggetti IPHostEntry, IPAddress e IPEndPoint impostiamo i dati di connessione al server.

Poi creiamo in oggetto Socket e lo connettiamo al server.

Con il metodo Send inviamo il messaggio al server, trasformandolo da string in un arrary di byte.

Più sotto leggiamo la risposta con il metodo Receive, facendo l'operazione opposta (da byte[] a string).

Infine chiudiamo la socket e il programma.

Considerate qua non ho messo nessun try/catch, e non c'è quindi nessun controllo su eventuali errori, che però andrebbe fatto.