LAN
Qualcuno conosce funzioni in C++ o VB6 per trasferire dati tra computer collegati in una LAN?
Risposte
Intendi qualche libreria in C++ per il networking?
Precisamente qualche algoritmo che trasferisca file da un computer ad un altro. Anche qualche libreria mi può essere utile.
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
#include
#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;
}

Questo è un client in C.
#include
#include
#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;
}
Grazie, quello che cercavo. Non sarebbe possibile fare questo in VB, senza dover avere il programma sul PC client?
"Crook":
Grazie, quello che cercavo. Non sarebbe possibile fare questo in VB, senza dover avere il programma sul PC client?
Temo di non aver capito. In che senso "senza dover avere il programma sul PC"?

Senza dover avere il programma che trasferisce i file su tutti e 2 i computer. Mi servirebbe poterlo fare solo da un computer (presumendo che ho accesso ad un solo PC). Ad esempio copiare un file su tutti i computer di una LAN, avendo il programma su un solo computer.
uhm... secondo me ti sfugge il significato del concetto client-server. Allora se vuoi fare un programma che si connetta ad un computer per trasferirgli qualcosa, allora dovrai sfruttare un servizio attivo su qualche porta remota, quindi inevitabilmente dovrai avere una parte client che manda file e una parte server che li acquisisce e li tratta.

Ho capito. Volevo sapere proprio questo. Pensavo ci fosse un modo diverso. Grazie.