git-svn-id: file:///raid/svn-personal/tewi/trunk@9 8739d7e6-ffea-ec47-b151-bdff447c6205
This commit is contained in:
Nishi 2024-09-13 11:28:43 +00:00
parent 61c54add91
commit 76ba2cc93f
3 changed files with 31 additions and 3 deletions

View File

@ -49,4 +49,5 @@ int main(int argc, char** argv) {
return 1;
}
cm_log("Daemon", "Ready");
tw_server_loop();
}

View File

@ -24,13 +24,14 @@ extern struct tw_config config;
fd_set fdset;
int sockcount = 0;
int sockets[MAX_PORTS];
#ifdef NO_IPV6
struct sockaddr_in addresses[MAX_PORTS];
#define SOCKADDR struct sockaddr_in
#else
struct sockaddr_in6 addresses[MAX_PORTS];
#define SOCKADDR struct sockaddr_in6
#endif
SOCKADDR addresses[MAX_PORTS];
int sockets[MAX_PORTS];
void close_socket(int sock) {
#ifdef __MINGW32__
@ -104,7 +105,32 @@ int tw_server_init(void) {
cm_log("Server", "Listen failure");
return 1;
}
FD_SET(sock, &fdset);
sockets[i] = sock;
}
return 0;
}
void tw_server_loop(void){
struct timeval tv;
while(1){
tv.tv_sec = 1;
tv.tv_usec = 0;
int ret = select(sockcount, &fdset, NULL, NULL, &tv);
if(ret == -1){
break;
}else if(ret > 0){
/* connection */
printf("!\n");
int i;
for(i = 0; i < sockcount; i++){
if(FD_ISSET(sockets[i], &fdset)){
SOCKADDR claddr;
int clen = sizeof(claddr);
int sock = accept(sockets[i], (struct sockaddr*)&claddr, &clen);
close_socket(sock);
}
}
}
}
}

View File

@ -4,5 +4,6 @@
#define __TW_SERVER_H__
int tw_server_init(void);
void tw_server_loop(void);
#endif