Projects/khet
Projects
/
khet
Archived
6
0
Fork 0

Use SO_REUSEADDR to solve "socket in use" problem.

remove some more dead code.
This commit is contained in:
Steinar Hamre 2008-10-11 00:39:47 +00:00
parent eed6a20455
commit 6262b0e853
1 changed files with 10 additions and 14 deletions

View File

@ -15,7 +15,6 @@
#include "net.h"
#include "server.h"
#define MAX_CLIENTS 10
#define SRV_FDS 1
struct client {
@ -51,34 +50,31 @@ net_server(int port) {
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(port);
servsock=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (servsock<0)
errx(1, "socket: %s\n", strerror(errno));
int r;
port--;
do {
serveraddr.sin_port = htons(++port);
r=bind(servsock, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
} while ((r<0) && (errno==EADDRINUSE));
if (r < 0)
int i=1;
if (setsockopt(servsock, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i)) < 0)
errx(1, "setsockopt SO_REUSEADDR: %s\n", strerror(errno));
if (bind(servsock, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)
errx(1, "bind port %d: %s\n", port, strerror(errno));
if (listen(servsock, 10) < 0)
errx(1, "listen: %s\n", strerror(errno));
pollfds[0].fd=servsock;
pollfds[0].events=POLLIN|POLLERR|POLLHUP;
for (int i=0; i<MAX_CLIENTS; i++) {
pollfds[SRV_FDS+i].fd=-1;
pollfds[SRV_FDS+i].events=0;
}
printf("Waiting for connections on port %d...\n", port);
}
void
net_all_flush() {
}
void
net_client_printf(int clientid, const char *fmt, ...) {
va_list ap;