Buongiorno a tutti,
da pochi giorni mi sono avvicinato alla programmazione di rete con il linguaggio C#. Mi sto documentando molto in rete anche se trovo esempi molto limitati. Sono riuscito a capire come avviene il passaggio di una stringa dal client al server e viceversa creando un socket con protocollo di tipo TCP. Ieri ho provato a realizzare un programmino dove il server manda una domanda al client (es: Scrivi un numero per trovare il quadrato di esso); viene spedito al client, il client spedisce la risposta al server, il server lavora il numero tramite determinata funzione e spedisce il risultato al client. Per far questo ho utilizzato ReceiveCallBack() (chiamato in BeginReceive)

Ecco l'esempio:
codice:

codice:
private static void ReceiveCallback(IAsyncResult AR)
        {
            Socket current = (Socket)AR.AsyncState;

            int received;
            try
            {
                received = current.EndReceive(AR);
            }
            catch (SocketException)
            {

                Console.WriteLine("Client scollegato");
                current.Close();//chiudo la connessione
                clientList.Remove(current);//elimino dalla lista utenti la connessione corrente
                return;
            }


            //current.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, current);
            //ricevo risposta
            byte[] recBuf = new byte[received];
            Array.Copy(buffer, recBuf, received); //copio dentro buffer quello che ricevo
            string text = Encoding.ASCII.GetString(recBuf);
            int a = Int32.Parse(text);

            byte[] data;
            //spedisco il messaggio del risultato
            Console.WriteLine("Ho ricevuto " + a);
            string b = Convert.ToString(Quad(a));
            data = Encoding.ASCII.GetBytes("Il quadrato di " +a + " e': " + b);


            current.Send(data);
            //Console.WriteLine("Messaggio inviato al client");
            //current.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, current);
        }

Quello che volevo sapere è: se voglio fargli fare un'altra operazione al server ... come devo fare? Una volta terminata la prima funzione (se il client ha ricevuto il risultato) il server manda un'altra funzione. Dovrei creare un'altra funzione simile a questa che riceva dati?
Spero di essermi spiegato Grazie!