Parlando di ambiente windows in C e VB c'è il winsock. In pratica implementarlo in VB è facilissimo e bastano davvero pochissime righe di codice per fare un programmino client-server. Mentre in C la situazione si complica poichè bisogna conoscere la teoria del SOCKET, la gestione è molto complicata anche se mille anzi mille^mille volte più efficiente del VB.
Questo è un client in C.
#include <stdio.h>
#include <winsock2.h>
#define PORT 5555
int winDLLstart();
void addr_initialize();
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[])
{
SOCKET 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]));
if ( winDLLstart() != 0 ) return;
sd=socket(AF_INET,SOCK_STREAM,0);
error=connect(sd,(struct sockaddr*) &server_addr,sizeof(server_addr));
if (error==0){
printf("Ho eseguito la connessione\n");
getsockname(sd, &mio_addr, &mio_addr_len);*/
printf("il mio port e': %d\n\n",ntohs(mio_addr.sin_port) );
closesocket(sd);
}
else printf("%s","\nErrore di connect\n\n");
closesocket(sd);
return 0;
}