Un Client con le WinSock 

Dopo aver trattato il Server ecco a voi una versione super ridotta di un Client implementato con le WSA (ma più che sufficente per capire il funzionamento del client, e molto ben commentata. n.d.mrcode:)

SCARICA QUI IL SORGENTE+DOC:

  // all'inizio includo tutti i file necessari  

#include <windows.h>
#include <winsock.h>
#include <stdio.h>

int main()
{
    SOCKET miosock; // il miosock socket che riceverà i dati e li invierà  
    sockaddr_in miosock_addr; // le impostazioni del miosock socket
    WSADATA data;  // questa variabile contiene i parametri di WSAStartup()
    WORD p;
    

    int err=0; // variabile per gestire gli errori(orrori)
    p=MAKEWORD(2,0);  // creo la variabile p che contiene la versione della wsock32.dll
    err=WSAStartup(p,&data); // inizializzo la wsock32.dll
    char ch;
    miosock=socket(PF_INET,SOCK_STREAM,0);  // inizializzo il socket
    miosock_addr.sin_family=PF_INET; // si usa il protocollo TCP/IP
    miosock_addr.sin_port=htons(IPPORT_TELNET); //la porta a cui connettersi
    miosock_addr.sin_addr.S_un.S_un_b.s_b1=127; // si crea l' indirizzo IP (nel nostro caso: 127.0.0.1)
    miosock_addr.sin_addr.S_un.S_un_b.s_b2=0;
    miosock_addr.sin_addr.S_un.S_un_b.s_b3=0;
    miosock_addr.sin_addr.S_un.S_un_b.s_b4=1;
    int lun=sizeof(struct sockaddr);
    

    err=connect(miosock,(struct sockaddr*)&miosock_addr,lun); // finalmente mi connetto al Server

La funzione err=CONNECT(SOCKET sock,(struct sockaddr*),int len) è quella che "connette" il socket al server e come avete visto i parametri sono il socket(nel nostro caso "miosock"), la variabile miosock_addr (che va convertita alla strutura dati sockaddr, e infine la grandezza della struttura sockaddr espressa da sizeof(struct sockaddr).

    char mess[100]; // il messaggio inviato dal Server (con un massimo di 100 byte)
    int n=0;
    n=recv(miosock,mess,100,0); // si riceve il messaggio di benvenuto dal Server
    mess[n]=0; // n rappresenta la lunghezza del messaggio in arrivo (ho stabilito un massimo di         100byte)
    printf(mess); // e lo visualizzo 
    while(ch!=0x1b) // finchè ch è diverso dal tasto ESC
    

    {
        ch=getchar(); // aspetto un carattere
        send(miosock,&ch,1,0);  // e lo invio al Server
    }

    closesocket(miosock);  // si chiude il socket
    return 0;  // The End
}

Se compilate il tutto avrete un Client perfettamente funzionante, che si connette sulla porta TELNET(n°23) sul famoso IP:127.0.0.1 (localhost).
PS: Ho omesso volontariamente ogni controllo sugli errori per non appesantire il codice, e poiche erano gia stati trattati nella versione Server. 

Bene, cosa dire di piu'? Ora correte a provare!!

 Happy Coding!

     MrCODE

Torna alla main page! Torna alla pagina principale