diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..e0d8cda Binary files /dev/null and b/.DS_Store differ diff --git a/7.client-server-print-ip-port-both/client b/7.client-server-print-ip-port-both/client new file mode 100755 index 0000000..9f00599 Binary files /dev/null and b/7.client-server-print-ip-port-both/client differ diff --git a/7.client-server-print-ip-port-both/daytimecli.c b/7.client-server-print-ip-port-both/daytimecli.c new file mode 100644 index 0000000..8d53c16 --- /dev/null +++ b/7.client-server-print-ip-port-both/daytimecli.c @@ -0,0 +1,50 @@ +/* Client che si collega a un server e basta */ + +#include "../basic.h" + +int main(int argc, char **argv) { + int sockfd; + struct sockaddr_in servaddr; + + if (argc != 3){ + printf("usage: daytimecli \n"); + exit(0); +} + if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ){ + printf("socket error\n"); + exit(0); +} + bzero(&servaddr, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_port = htons(atoi(argv[2])); /* server port */ + + if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){ + printf("inet_pton error for %s\n", argv[1]); + exit(0); +} + if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){ + printf("connect error\n"); + exit(0); + } + + struct sockaddr_in r_server_local_addr; + int r_server_local_addr_len = sizeof(r_server_local_addr); + + char * socket_buffer = (char *) malloc (r_server_local_addr_len) ; + + read (sockfd, socket_buffer,r_server_local_addr_len ); + + memcpy (&r_server_local_addr,socket_buffer, r_server_local_addr_len); + + + char buff[INET_ADDRSTRLEN]; + short port; + + inet_ntop(AF_INET, &(r_server_local_addr.sin_addr), buff, INET_ADDRSTRLEN);// get ip + port = ntohs(r_server_local_addr.sin_port);// get port + + fprintf (stdout,"%s%c%hi\n",buff,':',port); + + + exit(0); +} diff --git a/7.client-server-sendip/daytimecli.c~ b/7.client-server-print-ip-port-both/daytimecli.c~ similarity index 100% rename from 7.client-server-sendip/daytimecli.c~ rename to 7.client-server-print-ip-port-both/daytimecli.c~ diff --git a/7.client-server-print-ip-port-both/daytimecli.o b/7.client-server-print-ip-port-both/daytimecli.o new file mode 100644 index 0000000..cbc2c80 Binary files /dev/null and b/7.client-server-print-ip-port-both/daytimecli.o differ diff --git a/7.client-server-print-ip-port-both/daytimesrv.c b/7.client-server-print-ip-port-both/daytimesrv.c new file mode 100644 index 0000000..b2fa3db --- /dev/null +++ b/7.client-server-print-ip-port-both/daytimesrv.c @@ -0,0 +1,63 @@ +/* stampa l'ip del client che si collega */ + +#include "../basic.h" +#include + +int main(int argc, char **argv) { + int listenfd, connfd, n; + struct sockaddr_in servaddr; + char buff[INET_ADDRSTRLEN]; + short port; + + if (argc != 2 ){ + printf("usage: daytimesrv \n"); + exit(0); +} + if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ + printf("socket error\n"); + exit(0); +} + bzero(&servaddr, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* wildcard address */ + servaddr.sin_port = htons(atoi(argv[1])); /* server port */ + + if( (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0){ + printf("bind error\n"); exit(0); +} + if( listen(listenfd, 5) < 0 ) + { printf("listen error\n"); + exit(0); + } + + struct sockaddr_in client_addr; + int client_addr_len = sizeof(client_addr); + + struct sockaddr_in server_local_addr; + int server_local_addr_len = sizeof(server_local_addr); + + char * socket_buffer = (char *) malloc (server_local_addr_len) ; + + + + for ( ; ; ) { + if( (connfd = accept(listenfd, (struct sockaddr *) &client_addr, &client_addr_len)) < 0) + { printf("accept error\n"); + exit(0); + } + + inet_ntop(AF_INET, &(client_addr.sin_addr), buff, INET_ADDRSTRLEN);// get client ip + port = ntohs(client_addr.sin_port);// get client port + + fprintf (stdout,"%s%c%hi\n",buff,':',port); + + + + getsockname (connfd, (struct sockaddr *) &server_local_addr, &server_local_addr_len); + memcpy (socket_buffer, &server_local_addr, server_local_addr_len); + write (connfd,socket_buffer, server_local_addr_len); + + + close(connfd); + } +} diff --git a/7.client-server-sendip/daytimesrv.c~ b/7.client-server-print-ip-port-both/daytimesrv.c~ similarity index 100% rename from 7.client-server-sendip/daytimesrv.c~ rename to 7.client-server-print-ip-port-both/daytimesrv.c~ diff --git a/7.client-server-print-ip-port-both/daytimesrv.o b/7.client-server-print-ip-port-both/daytimesrv.o new file mode 100644 index 0000000..8d32205 Binary files /dev/null and b/7.client-server-print-ip-port-both/daytimesrv.o differ diff --git a/7.client-server-sendip/makefile b/7.client-server-print-ip-port-both/makefile similarity index 100% rename from 7.client-server-sendip/makefile rename to 7.client-server-print-ip-port-both/makefile diff --git a/7.client-server-sendip/makefile~ b/7.client-server-print-ip-port-both/makefile~ similarity index 100% rename from 7.client-server-sendip/makefile~ rename to 7.client-server-print-ip-port-both/makefile~ diff --git a/7.client-server-sendip/readme b/7.client-server-print-ip-port-both/readme similarity index 100% rename from 7.client-server-sendip/readme rename to 7.client-server-print-ip-port-both/readme diff --git a/7.client-server-sendip/readme~ b/7.client-server-print-ip-port-both/readme~ similarity index 100% rename from 7.client-server-sendip/readme~ rename to 7.client-server-print-ip-port-both/readme~ diff --git a/7.client-server-print-ip-port-both/server b/7.client-server-print-ip-port-both/server new file mode 100755 index 0000000..98f7cfa Binary files /dev/null and b/7.client-server-print-ip-port-both/server differ diff --git a/7.client-server-sendip/client b/7.client-server-printipclient/client similarity index 100% rename from 7.client-server-sendip/client rename to 7.client-server-printipclient/client diff --git a/7.client-server-sendip/daytimecli.c b/7.client-server-printipclient/daytimecli.c similarity index 100% rename from 7.client-server-sendip/daytimecli.c rename to 7.client-server-printipclient/daytimecli.c diff --git a/7.client-server-printipclient/daytimecli.c~ b/7.client-server-printipclient/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/7.client-server-printipclient/daytimecli.c~ @@ -0,0 +1,31 @@ +/* Client che interroga un daytime server */ + +#include "../basic.h" + +int main(int argc, char **argv) { + int sockfd, n; + char recvline[MAXLINE + 1]; + struct sockaddr_in servaddr; + + if (argc != 3){ + printf("usage: daytimecli \n"); + exit(0); +} + if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ){ + printf("socket error\n"); + exit(0); +} + bzero(&servaddr, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_port = htons(atoi(argv[2])); /* server port */ + + if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){ + printf("inet_pton error for %s\n", argv[1]); + exit(0); +} + if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){ + printf("connect error\n"); + exit(0); + } + exit(0); +} diff --git a/7.client-server-sendip/daytimecli.o b/7.client-server-printipclient/daytimecli.o similarity index 100% rename from 7.client-server-sendip/daytimecli.o rename to 7.client-server-printipclient/daytimecli.o diff --git a/7.client-server-sendip/daytimesrv.c b/7.client-server-printipclient/daytimesrv.c similarity index 100% rename from 7.client-server-sendip/daytimesrv.c rename to 7.client-server-printipclient/daytimesrv.c diff --git a/7.client-server-printipclient/daytimesrv.c~ b/7.client-server-printipclient/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/7.client-server-printipclient/daytimesrv.c~ @@ -0,0 +1,41 @@ +/* stampa l'ip del client */ + +#include "../basic.h" +#include + +int main(int argc, char **argv) { + int listenfd, connfd, n; + struct sockaddr_in servaddr; + char buff[MAXLINE]; + time_t ticks; + + if (argc != 2 ){ + printf("usage: daytimesrv \n"); + exit(0); +} + if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ + printf("socket error\n"); + exit(0); +} + bzero(&servaddr, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* wildcard address */ + servaddr.sin_port = htons(atoi(argv[1])); /* server port */ + + if( (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0){ + printf("bind error\n"); exit(0); +} + if( listen(listenfd, 5) < 0 ) + { printf("listen error\n"); + exit(0); +} + for ( ; ; ) { + if( (connfd = accept(listenfd, (struct sockaddr *) NULL, NULL)) < 0) + { printf("accept error\n"); exit(0);} else { + } + + n=read(connfd, buff, MAXLINE); + fprintf (stdout,%s\n,buff); + close(connfd); + } +} diff --git a/7.client-server-sendip/daytimesrv.o b/7.client-server-printipclient/daytimesrv.o similarity index 100% rename from 7.client-server-sendip/daytimesrv.o rename to 7.client-server-printipclient/daytimesrv.o diff --git a/7.client-server-printipclient/makefile b/7.client-server-printipclient/makefile new file mode 100644 index 0000000..16fdd6d --- /dev/null +++ b/7.client-server-printipclient/makefile @@ -0,0 +1,9 @@ +all : server client +server : daytimesrv.o ../fun-corso-reti.o + gcc -o server daytimesrv.o ../fun-corso-reti.o +client : daytimecli.o ../fun-corso-reti.o + gcc -o client daytimecli.o ../fun-corso-reti.o +daytimesrv.o : daytimesrv.c ../basic.h + gcc -c -o daytimesrv.o daytimesrv.c +fun-corso-reti.o : ../fun-corso-reti.c ../basic.h + gcc -c -o ../fun-corso-reti.o ../fun-corso-reti.c diff --git a/7.client-server-printipclient/makefile~ b/7.client-server-printipclient/makefile~ new file mode 100644 index 0000000..ed76715 --- /dev/null +++ b/7.client-server-printipclient/makefile~ @@ -0,0 +1,8 @@ +server : daytimesrv.o ../fun-corso-reti.o + gcc -o server daytimesrv.o ../fun-corso-reti.o +client : daytimecli.o ../fun-corso-reti.o + gcc -o client daytimecli.o ../fun-corso-reti.o +daytimesrv.o : daytimesrv.c ../basic.h + gcc -c -o daytimesrv.o daytimesrv.c +fun-corso-reti.o : ../fun-corso-reti.c ../basic.h + gcc -c -o ../fun-corso-reti.o ../fun-corso-reti.c diff --git a/7.client-server-printipclient/readme b/7.client-server-printipclient/readme new file mode 100644 index 0000000..1f85399 --- /dev/null +++ b/7.client-server-printipclient/readme @@ -0,0 +1,2 @@ +il server attende una connessione dal client e stampa lip del client +il client si connette soltanto al server diff --git a/7.client-server-printipclient/readme~ b/7.client-server-printipclient/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/7.client-server-sendip/server b/7.client-server-printipclient/server similarity index 100% rename from 7.client-server-sendip/server rename to 7.client-server-printipclient/server diff --git a/fun-corso-reti.o b/fun-corso-reti.o index 5b8cdd9..0422e80 100644 Binary files a/fun-corso-reti.o and b/fun-corso-reti.o differ