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:)
// 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) {
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