#include #include #include #include #include #include #include #include #define BS 4096*3 main(int argc, char ** argv) { int s, n, ns, cond, len, rc, val; short port = 6767; struct sockaddr_in mysock, peeraddr; char buffer[BS]; char addr[16]; s = socket(PF_INET, SOCK_DGRAM, 0); if (argc >= 2) { port = atoi(argv[1]); }; mysock.sin_family = AF_INET; mysock.sin_port = htons(port); mysock.sin_addr.s_addr = INADDR_ANY; val = 1; rc = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(int)); printf ("setsockopt => %d (%d)\n", rc, errno); rc = bind(s, (struct sockaddr*) &mysock, sizeof(struct sockaddr_in)); printf ("bind => %d (%d)\n", rc, errno); while(1) { printf("\n"); len = sizeof(struct sockaddr_in); rc = recvfrom(s, buffer, BS, 0, (struct sockaddr*) &peeraddr, &len); if (rc == -1) printf("recvfrom returned %d (%d)\n", rc, errno); else { inet_ntop(AF_INET, &peeraddr.sin_addr.s_addr, addr, 16); printf("recvfrom got from %s:%d =\"%s\"\n", addr, ntohs(peeraddr.sin_port), buffer); }; sleep(1); }; }; /* * Local variables: * compile-command: "gcc -g -o server server.c" * End: */