Buongiorno a tutti, avrei un problema a compilare un programma sotto Dev-C++... il programma è un client che tenta di connettersi ad un server. Il codice è il seguente:
Codice:
#include <stdio.h>
#include <winsock.h>
#include <windows.h>
#define close closesocket
#define PORT 4000
void addr_initialize (struct sockaddr_in *indirizzo, int port, long IPaddr)
{
indirizzo->sin_family=AF_INET;
indirizzo->sin_port=htons((u_short)port);
indirizzo->sin_addr.s_addr=IPaddr;
}
int main (int argc, char *argv[])
{
int sd;
struct sockaddr_in server_addr;
struct sockaddr_in mio_addr;
int mio_addr_len=sizeof(mio_addr);
int error;
addr_initialize (&server_addr, PORT, inet_addr(argv[1]));
sd=socket(AF_INET, SOCK_STREAM, 0);
error=connect(sd, (struct sockaddr*)&server_addr, sizeof(server_addr));
if (0==error)
{
printf ("Ho eseguito la connessione\n");
getsockname(sd, (struct sockaddr*)&mio_addr, &mio_addr_len);
printf ("La mia porta è: %d\n\n", ntohs(mio_addr.sin_port));
}
else printf ("%s", "Errore di connect\n\n");
close(sd);
system("PAUSE");
return 0;
}
Gli errori restituiti nella compilazione sono:
C:\DOCUME~1\ALBERT~1\IMPOST~1\Temp\ccSAaaaa.o(.text+0x1a) In function `Z15addr_initializeP11sockaddr_inil':
[Linker error] undefined reference to `htons@4'
C:\DOCUME~1\ALBERT~1\IMPOST~1\Temp\ccSAaaaa.o(.text+0xde) In function `main':
[Linker error] undefined reference to `WSAStartup@8'
[Linker error] undefined reference to `inet_addr@4'
[Linker error] undefined reference to `socket@12'
[Linker error] undefined reference to `connect@12'
[Linker error] undefined reference to `getsockname@12'
[Linker error] undefined reference to `ntohs@4'
[Linker error] undefined reference to `closesocket@4'
Credo di dover linkare la libreria libws2_32.a, ma non ho idea di come farlo. Qualcuno saprebbe darmi una mano?
Grazie mille.
Alberto