c - Modify the server so that it will only listen on loopback interface -
i'm trying run client server connection. here's code:
server.c
#include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <time.h> #include <unistd.h> #include <string.h> #define max_buffer 128 #define daytime_server_port 13
/.../ int main(void) { int serverfd, connectionfd; struct sockaddr_in servaddr; char timebuffer[max_buffer+1]; time_t currentime;
serverfd = socket(af_inet, sock_stream, 0); memset(&servaddr, 0 , sizeof(servaddr)); servaddr.sin_family = af_inet; servaddr.sin_addr.s_addr = htonl(inaddr_any); servaddr.sin_port = htons(daytime_server_port); bind(serverfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); listen(serverfd, 5); while(1) { connectionfd = accept(serverfd, (struct sockaddr *) null, null); if(connectionfd >= 0) { currentime = time(null); snprintf(timebuffer, max_buffer, "%s\n", ctime(¤time)); write(connectionfd, timebuffer, strlen(timebuffer)); close(connectionfd); } } }
client.c
#include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <time.h> #include <unistd.h> #include <string.h> #define max_buffer 128 #define daytime_server_port 13 int main() { int connectionfd, in; struct sockaddr_in servaddr; char timebuffer[max_buffer+1]; connectionfd = socket(af_inet,sock_stream,0); memset(&servaddr,0 ,sizeof(servaddr)); servaddr.sin_family = af_inet; servaddr.sin_port = htons(daytime_server_port); servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); connect(connectionfd,(struct sockaddr_in *) &servaddr , sizeof(servaddr)); while((in = read(connectionfd, timebuffer, max_buffer)) >0) { timebuffer[in] = 0; printf("\n%s" , timebuffer); } /*...*/ close(connectionfd); }
how modify server hear on loopback interface (not other interface)?
change
servaddr.sin_addr.s_addr = htonl(inaddr_any);
to utilize loop address. i.e.
servaddr.sin_addr.s_addr = htonl(2130706433l)
(used http://www.smartconversion.com/unit_conversion/ip_address_converter.aspx maths)
c networking netstat
No comments:
Post a Comment