Ok, scusa... pensavo valessero solo per la compilazione sotto Visual C.
Il codice allora è questo:
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;
#ifdef WIN32
WSADATA wsaData;
WSAStartup (0x0101,&wsaData);
#endif
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;
}