/* server */ #include #include #include #include #include #include #include #include int main(void) { int sockdesc, newdesc, new; sockdesc = socket(AF_INET, SOCK_STREAM, 0); if(sockdesc == -1){ perror("socket\n"); exit(1); } struct sockaddr_in me; struct sockaddr_in friend; bzero(&me, sizeof(me)); bzero(&friend, sizeof(friend)); me.sin_family=AF_INET; me.sin_port=htons(8081); me.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sockdesc, (struct sockaddr *)&me, sizeof(struct sockaddr))<0){ perror("bind\n"); exit(1); } listen(sockdesc, 1); int newsize=sizeof(struct sockaddr); new = accept(sockdesc, (struct sockaddr *)&friend, &newsize); if(new == -1) { perror("accept\n"); exit(1); } socklen_t newlen=sizeof(struct sockaddr); if(getpeername(sockdesc, (struct sockaddr *)&friend, &newlen)<0){ perror("getpeername\n"); exit(1); } printf("IP: %s\n", inet_ntoa(friend.sin_addr)); printf("PORT: %d\n", ntohs(friend.sin_port)); close(sockdesc); close(newdesc); return 0; }