Ciao, ho bisogno del vostro aiuto, mi sono imbattuto nella programmazione dei socket in C in ambiente windows7. Devo collegarmi tramite codice ad un url comprensiva di parametro GET (es. http://127.0.0.1/memGetParams.php?m=ciao). Dopo tante ricerche ho scelto come IDE eclipse per C insieme a mingw. Il test con HelloWord è ok quindi credo di aver configurato tutto bene, ma quando cerco di far girare esempi con i socket, sorgono problemi. Ho prelevato esempi da http://unsecure.altervista.org/socket/socket.htm. Ho provato l'esempio server.c e il risultato della console è:
Potete spiegarmi il significato? Con una ricerca mi sembra di aver capito che dipende dalle librerie di win ....??codice:gcc -O0 -g3 -Wall -c -fmessage-length=0 -o server.o ..\server.c gcc -o server.exe server.o server.o: In function `main': D:\workspacesC\server\Debug/../server.c:22: undefined reference to `WSAStartup@8' D:\workspacesC\server\Debug/../server.c:29: undefined reference to `socket@12' D:\workspacesC\server\Debug/../server.c:31: undefined reference to `htons@4' D:\workspacesC\server\Debug/../server.c:33: undefined reference to `bind@12' D:\workspacesC\server\Debug/../server.c:34: undefined reference to `listen@8' D:\workspacesC\server\Debug/../server.c:36: undefined reference to `accept@12' D:\workspacesC\server\Debug/../server.c:38: undefined reference to `send@16' D:\workspacesC\server\Debug/../server.c:39: undefined reference to `closesocket@4' D:\workspacesC\server\Debug/../server.c:40: undefined reference to `closesocket@4' D:\workspacesC\server\Debug/../server.c:41: undefined reference to `WSACleanup@0' collect2: ld returned 1 exit status Build error occurred, build is stopped
Per quanto riguarda il mio programmino avevo scritto:
e l'errore è:codice:void main(int argc, char *argv[]){ int sock; struct sockaddr_in sAddr; unsigned short sPort = 80; char *sIP = "127.0.0.1"; //qui posso inserire l'url con i param??? WSADATA wsaData; if(WSAStartup(MAKEWORD(2,0), &wsaData) != 0) { fprintf(stderr, "wsa start error"); exit(1); } if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { DieWithError("socket failed"); } memset(&sAddr, 0, sizeof(sAddr)); sAddr.sin_family = AF_INET; sAddr.sin_addr.s_addr = inet_addr(sIP); sAddr.sin_port = htons(sPort); if (connect(sock, (struct sockaddr *)&sAddr, sizeof(sAddr)) < 0){ DieWithError("connect failed"); } closesocket(sock); WSACleanup(); exit(0); }
Potete darmi una mano?? consigli, spiegazioni, anche codice.codice:**** Internal Builder is used for build **** gcc -o testSocket2.exe client.o client.o: In function `main': D:\workspacesC\testSocket2\Debug/../client.c:24: undefined reference to `WSAStartup@8' D:\workspacesC\testSocket2\Debug/../client.c:30: undefined reference to `socket@12' D:\workspacesC\testSocket2\Debug/../client.c:41: undefined reference to `htons@4' D:\workspacesC\testSocket2\Debug/../client.c:43: undefined reference to `connect@12' D:\workspacesC\testSocket2\Debug/../client.c:47: undefined reference to `closesocket@4' D:\workspacesC\testSocket2\Debug/../client.c:48: undefined reference to `WSACleanup@0' collect2: ld returned 1 exit status Build error occurred, build is stopped
Se avete bisogno di chiarimenti scrivete, non so se non ho scritto qualcos'altro di importante, adesso non mi viene in mente.
Vi ringrazio in anticipo.

Rispondi quotando