/* derived from http://www.cs.put.poznan.pl/csobaniec/examples/sockets/server-tcp-simple.c */ #include #include #include #include #include #include #include #include #include #undef errno extern int errno; static char msg[] =" Hello from server!\n"; int main(int argc, char* argv[]) { int sockd, sockd2; unsigned int addrlen; struct sockaddr_in my_name, peer_name; int status; /* create a socket */ sockd = socket(AF_INET, SOCK_STREAM, 0); if (sockd == -1) { perror("Socket creation error"); exit(1); } if (argc < 2) { fprintf(stderr, "Usage: %s port_number\n", argv[0]); exit(1); } /* server address */ my_name.sin_family = AF_INET; my_name.sin_addr.s_addr = INADDR_ANY; my_name.sin_port = htons(atoi(argv[1])); status = bind(sockd, (struct sockaddr*)&my_name, sizeof(my_name)); if (status == -1) { perror("Binding error"); exit(1); } status = listen(sockd, 5); if (status == -1) { perror("Listening error"); exit(1); } while(1) { /* wait for a connection */ addrlen = sizeof(peer_name); sockd2 = accept(sockd, (struct sockaddr*)&peer_name, &addrlen); if (sockd2 == -1) { perror("Wrong connection"); exit(1); } write(sockd2, msg, strlen(msg)+1); close(sockd2); } return 0; }