Giovani2015
Nuovo Utente
- Messaggi
- 26
- Reazioni
- 0
- Punteggio
- 23
Ciao a tutti,
Ho implementato in C una funzione client.c per provare una connessionedel socket ad un indirizzo IP locale e una porta TCP locale tramite un'altra funzione server.c.
Ora vorrei tradurre il mio programma in Python pero incontro un po' di difficoltà.
All'esecuzione, la funzione client.c avrà 2 argomenti da mettere nella riga di comando, l'hostname e il port.
Esempio:
./client.c 127.0.0.1 1234
Ecco la mia funzione:
client.c
Se qualcuno potrebbe aiutarmi.
Grazie in anticipo !
Ho implementato in C una funzione client.c per provare una connessionedel socket ad un indirizzo IP locale e una porta TCP locale tramite un'altra funzione server.c.
Ora vorrei tradurre il mio programma in Python pero incontro un po' di difficoltà.
All'esecuzione, la funzione client.c avrà 2 argomenti da mettere nella riga di comando, l'hostname e il port.
Esempio:
./client.c 127.0.0.1 1234
Ecco la mia funzione:
client.c
Codice:
void try(int result, char * name){
if (result < 0){
perror(name);
exit(1);
}
}
int main(int ac, char * av[]){
struct addrinfo souhait, * info;
int sock, t;
char buffer[1024];
if (ac != 3){
fprintf(stderr, "usage: %s machine port\n", av[0]);
exit(1);
}
memset(&souhait, 0, sizeof souhait);
souhait.ai_family = AF_UNSPEC;
souhait.ai_socktype = SOCK_STREAM;
if ((t = getaddrinfo(av[1], av[2], &souhait, &info)) != 0){
fprintf(stderr, "error %s in %s:%s\n", gai_strerror(t), av[1], av[2]);
exit(1);
}
try(sock = socket(info->ai_family, info->ai_socktype, info->ai_protocol), "socket");
try(connect(sock, info->ai_addr, info->ai_addrlen), "connect");
while((t = read(0, buffer, sizeof buffer)) > 0){
write(sock, buffer, t);
if ((t = read(sock, buffer, sizeof buffer)) <= 0)
break;
write(1, buffer, t);
}
try(t, "read");
exit(t < 0);
}
Se qualcuno potrebbe aiutarmi.
Grazie in anticipo !