Listing 6: Partial listing of dumsocks socket server
// file dumsocks.c #ifdef OS_WIN32 WSADATA wsaData; #endif int server_port = 0; int console_output = TRUE; char d_log_file[256]; void main(int argc, char **argv) { int isterm; if (argc == 1) { usage(); exit(0); } if (!parse_comline(argc, argv)) exit(0); if (!srv_initialize()) exit(0); while(1) { if (ipc_server_wait()) { isterm = process_request(); (void)ipc_close_client(); } if (isterm) break; } #ifdef OS_WIN32 WSACleanup(); #endif exit(0); } int srv_initialize(void) { char localhost[128]; int ret; #ifdef OS_WIN32 if (WSAStartup(WINSOCK_VERSION, &wsaData)) { WSACleanup(); return(FALSE); } #endif if (!ipc_init(localHost, server_port)) { #ifdef OS_WIN32 WSACleanup(); #endif return(FALSE); } if ((ret = sloc_initialize()) != SL_OK) { #ifdef OS_WIN32 WSACleanup(); #endif return(FALSE); } if ((ret = sloc_add(DM_SERVICE_NAME, localHost, server_port, (char *)NULL)) != SL_OK) { #ifdef OS_WIN32 WSACleanup(); #endif return(FALSE); } return(TRUE); }