View Single Post
Old 04-03-2005, 16:19   #1
Marinelli
Senior Member
 
L'Avatar di Marinelli
 
Iscritto dal: Aug 1999
Città: Tolmezzo (UD) - Milano
Messaggi: 13744
Dev-C++ e programmazione di rete

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
__________________
...to go where no one has gone before.
One ring to rule them all, one ring to find them, one ring to bring them all and in darkness bind them.
Caron, non ti crucciare: vuolsi così colà dove si puote ciò che si vuole, e più non dimandare.

Ultima modifica di Marinelli : 04-03-2005 alle 16:23.
Marinelli è offline   Rispondi citando il messaggio o parte di esso