Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


La programmazione client-server , Guide, Progetti e Ricerche di Informatica

Guide sulla creazione dei socket per la progettazione dei sistemi client-server.

Tipologia: Guide, Progetti e Ricerche

2015/2016

Caricato il 15/03/2016

Mario.Bifulco
Mario.Bifulco 🇮🇹

3 documenti

1 / 2

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
27/12/2015 LaProgrammazioneClient/ServerinC
http://www.swprog.com/articoli/csc_3.php 1/2
IlCodic e
serve r.c
01. #include<stdio.h>
02. #include<winsock.h>
03. #include<string.h>
04.
05. intmain(intargc ,char*argv[])
06. {
07. SOCK ETlistenSocke
08. SOCK ETrem oteSocket;
09. SOCK ADDR_INSer ver_addr;
10. SOCK ADDR_INClient_add
11. intsin_size;
12. shortpor
13.
14. charbuffer[256];
15.
16. intwsastartup;
17. intls_result;
18.
19. /*Inizializzazione dellalibreriaSock et*/
20. WORDwVe rsionRe quested=MAKEWORD(2,2);
21. WSADATAwsaData;
22. wsastartup=WSAS tartup(wVersionRe quested,&wsaData);
23. if(wsastartup!=NO_ERROR )printf("ErroreWS AStartup()\n");
24.
25. /*Crea zionedellaS ocke tchesiporràinascoltodirichies tedelClient*/
26. listenSoc ket=so cket(AF_INET,SOCK_STREAM,IPPROTO_T CP);
27. if(listenSo cket<0)
28. printf("Ser ver:errorenellacreazionedellasocke t.\n");
29. elseprintf("LaListeningS ocke tèpar tita\n");
30.
31. /*Effettualabindsull’indirizzoeportaoraspec ificati*/
32. port=4000;
33.
34. Serv er_a ddr.sin_fa mily=A F_INET;
35. Serv er_a ddr.sin_addr.s_addr="127.0.0.1";
36. Serv er_a ddr.sin_port=htons(port);
37.
38. if(bind(listenS ocke t,(LPSOCK ADDR)&Serv er_a ddr,size of(structso ckaddr))<0)
39. printf("Ser ver:erroredurantelabind.\n");
40.
41. /*Lasoc ketsipo nein"as colto"tramitelalisten()*/
42. ls_result=listen(listenSocket,S OMAXCONN);
43. if(ls_result<0)printf("Server :erro redur antelalis ten.\n");
44. elseprintf("LaSocketèinAsco lto\n");
45.
46. /*Lasoc ketaccettalarichiestadiconnessionede lClient*/
47. sin_size=sizeof(structsock addr_in
48. remoteSock et=acc ept(listenSo cket,(structsockaddr*)&Client_addr,
49. &sin_size);
50. printf("AccettataConnessioneconClie nt:%s\n",
51. inet_ntoa(Client_addr.sin_addr));
52.
53. /*IlSe rveraccettailmessaggiodalClient*/
54. recv (remo teSock et,buffer,sizeof(buffer ),0);
55. printf("MessaggioAr rivato:%s\n",buffe r);
56.
57. printf("ChiudoilServ er");
58. close(remoteSock et);
59. WSAC leanup();
60.
61. system ("pause");
62. return0;
63. }
pf2

Anteprima parziale del testo

Scarica La programmazione client-server e più Guide, Progetti e Ricerche in PDF di Informatica solo su Docsity!

27/12/2015 La Programmazione Client/Server in C

http://www.swprog.com/articoli/csc_3.php 1/

Il Codice

server.c

  1. #include <stdio.h>
  2. #include <winsock.h>
  3. #include <string.h>
  4. int main(int argc, char *argv[])
  5. {
  6. SOCKET listenSocket;
  7. SOCKET remoteSocket;
  8. SOCKADDR_IN Server_addr;
  9. SOCKADDR_IN Client_addr;
  10. int sin_size;
  11. short port;
  12. char buffer[256];
  13. int wsastartup;
  14. int ls_result;
  15. /* Inizializzazione della libreria Socket */
  16. WORD wVersionRequested = MAKEWORD(2,2);
  17. WSADATA wsaData;
  18. wsastartup = WSAStartup(wVersionRequested, &wsaData);
  19. if (wsastartup != NO_ERROR) printf("Errore WSAStartup()\n");
  20. /* Creazione della Socket che si porrà in ascolto di richieste del Client*/
  21. listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  22. if (listenSocket < 0)
  23. printf("Server: errore nella creazione della socket.\n");
  24. else printf("La Listening Socket è partita\n");
  25. /* Effettua la bind sull’indirizzo e porta ora specificati */
  26. port = 4000;
  27. Server_addr.sin_family = AF_INET;
  28. Server_addr.sin_addr.s_addr = "127.0.0.1";
  29. Server_addr.sin_port = htons(port);
  30. if (bind(listenSocket,(LPSOCKADDR)&Server_addr,sizeof(struct sockaddr)) < 0)
  31. printf("Server: errore durante la bind.\n");
  32. /* La socket si pone in "ascolto" tramite la listen() */
  33. ls_result = listen(listenSocket, SOMAXCONN);
  34. if (ls_result < 0) printf("Server: errore durante la listen.\n");
  35. else printf("La Socket è in Ascolto\n");
  36. /* La socket accetta la richiesta di connessione del Client */
  37. sin_size = sizeof(struct sockaddr_in);
  38. remoteSocket = accept(listenSocket, (struct sockaddr *)&Client_addr,
  39. &sin_size);
  40. printf("Accettata Connessione con Client: %s\n",
  41. inet_ntoa(Client_addr.sin_addr));
  42. /* Il Server accetta il messaggio dal Client */
  43. recv(remoteSocket, buffer, sizeof(buffer), 0);
  44. printf("Messaggio Arrivato: %s \n", buffer);
  45. printf("Chiudo il Server");
  46. close(remoteSocket);
  47. WSACleanup();
  48. system("pause");
  49. return 0;
  50. }

27/12/2015 La Programmazione Client/Server in C

http://www.swprog.com/articoli/csc_3.php 2/

client.c

  1. #include <stdio.h>
  2. #include <winsock.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. SOCKET clientsocket;
  7. SOCKADDR_IN addr;
  8. char messaggio[80];
  9. short port;
  10. WORD wVersionRequested = MAKEWORD(2,2);
  11. WSADATA wsaData;
  12. WSAStartup(wVersionRequested, &wsaData);
  13. port = 4000;
  14. addr.sin_family = AF_INET;
  15. addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  16. addr.sin_port = htons(port);
  17. clientsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  18. if (connect(clientsocket, (LPSOCKADDR)&addr, sizeof(addr)) < 0)
  19. printf("Errore nella connessione con il Server");
  20. printf("Messaggio da Inviare: ");
  21. gets(messaggio);
  22. send(clientsocket,messaggio,sizeof(messaggio),0);
  23. WSACleanup();
  24. system("pause");
  25. return 0;
  26. }