#include <stdio.h>#include <winsock.h>#include <string.h>#ifndef SD_SEND#define SD_SEND 1#endifbool init_winsock(void) { WSAData Data; int Code; if((Code=WSAStartup(MAKEWORD(1, 1),&Data)) != 0) { printf("erreur dans WSAStartup() : %d\n", Code); return false; } return true;}SOCKET etablir_connexion(u_long adresse_distante, u_short port) { sockaddr_in sinDistant; SOCKET sd = socket(AF_INET, SOCK_STREAM, 0); if(sd!=INVALID_SOCKET) { sinDistant.sin_family = AF_INET; sinDistant.sin_addr.s_addr = adresse_distante; sinDistant.sin_port = port; if(connect(sd, (sockaddr*)&sinDistant, sizeof(sockaddr_in))==SOCKET_ERROR) sd = INVALID_SOCKET; } return sd;}u_long resoudre_adresse(char* hote) { hostent* pHE; u_long adresse_distante = inet_addr(hote); if(adresse_distante == INADDR_NONE) { pHE = gethostbyname(hote); if(pHE == 0) return INADDR_NONE; adresse_distante = *((u_long*)pHE->h_addr_list[0]); } return adresse_distante;}int main(void) { char *Hote = "newbiecontest.free.fr"; int Port = 80; int req; init_winsock(); u_long adresse; SOCKET sd; char *requete; char tampon; // Trouver l'adresse de l'hôte printf("Recherche de l'hôte... [%s]\n", Hote); adresse = resoudre_adresse(Hote); if(adresse==INADDR_NONE) { printf("Echec !\n"); return 3; } printf("Connexion en cours !\n"); sd = etablir_connexion(adresse, htons(Port)); if(sd!=INVALID_SOCKET) printf("Connecté !\n"); // envoi de la requête requete="GET /ep15/index.php HTTP/1.1\r\nHost: newbiecontest.free.fr\r\nAccept: */*\r\n\r\n"; req=send(sd, requete, strlen(requete)+1,0); // réception de la réponse while(recv(sd,&tampon,1,0)!=0) { printf("%c", tampon); } // quitter correctement winsock shutdown(sd, SD_SEND); closesocket(sd); WSACleanup(); system("PAUSE");}
Code Client (TCP - socket bloquante)#include <stdio.h> // printf#include <conio.h> // getch()#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")void main(){ WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKADDR_IN sin; char buffer[255]; sock = socket(AF_INET, SOCK_STREAM, 0); sin.sin_addr.s_addr = inet_addr("127.0.0.1"); sin.sin_family = AF_INET; sin.sin_port = htons(4444); connect(sock, (SOCKADDR *)&sin, sizeof(sin)); memset(buffer,0,255); recv(sock, buffer, sizeof(buffer), 0); printf("%s",buffer); getch(); closesocket(sock); WSACleanup();}Code Serveur (TCP - socket bloquante)#include <stdio.h> // printf#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")void main(){ char buffer[255]; WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKET csock; SOCKADDR_IN sin; SOCKADDR_IN csin; sock = socket(AF_INET, SOCK_STREAM, 0); sin.sin_addr.s_addr = INADDR_ANY; sin.sin_family = AF_INET; sin.sin_port = htons(4444); bind(sock, (SOCKADDR *)&sin, sizeof(sin)); listen(sock, 0); while(1) { int sinsize = sizeof(csin); if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET) { memset(buffer,0,255); wsprintf(buffer,"Bienvenu sur mon serveur ;)"); send(csock,buffer,255,0); } }}
[phoenix@home tmp]$ gcc -o test test.ctest.c:3:2: warning: no newline at end of file[phoenix@home tmp]$ echo -e '\n' >> test.c[phoenix@home tmp]$ gcc -o test test.c[phoenix@home tmp]$
Ce serait bien de voir ta 27eme ligne voire tout ton code
1>c:\documents and settings\********\mes documents\visual studio 2005\projects\o\o\o.cpp(4) : fatal error C1083: Impossible d'ouvrir le fichier include : 'winsock2.h' : No such file or directory