#include #include #include /** * getClientSocket() listens on the specified port, and returns * a socket connected to the first client that contacts us. */ int getClientSocket(int port) { /* Note: This code performs NO error checking. A sane version */ /* would carefully check the proper return values from each of */ /* the library calls. */ int listenSocket = -1; int clientSocket = -1; int size = 0; struct sockaddr_in serverAddress, freshSocketAddress; // Create a socket. listenSocket = socket(AF_INET,SOCK_STREAM,0); // Zero out Internet Socket struct memset((char*)&serverAddress, 0, sizeof(struct sockaddr_in)); serverAddress.sin_family = AF_INET; serverAddress.sin_addr.s_addr=htonl(INADDR_ANY); // INADDR_ANY interpreted as use MY address. serverAddress.sin_port=htons(port); // Bind socket to port on this machine. bind(listenSocket, (struct sockaddr *)&serverAddress, sizeof(struct sockaddr)); // Setup socket to listen for connections. listen(listenSocket,1); // Wait for client, then give me new socket for // the connection with that client. clientSocket = accept(listenSocket, (struct sockaddr*)&freshSocketAddress, &size); // Tidyness is a virtue. close(listenSocket); return clientSocket; } // read() and write() or send() and recv() with // clientSocket file descriptor.