void connection_connect_help(struct connection_s* self, struct connect_msg* connect_data) { if(self->fd != SOCKET_ERROR) { return; } self->fd = ox_socket_nonblock_connect(connect_data->ip, connect_data->port, connect_data->timeout); if(self->fd != SOCKET_ERROR) { ox_socket_nodelay(self->fd); ox_fdset_add(self->fdset, self->fd, ReadCheck); ox_socket_nonblock(self->fd); self->status = connection_establish; } connection_send_logicmsg(self, (self->status == connection_none ? net_msg_connect_failed : net_msg_establish), NULL, 0); }
static void listen_thread_fun(void* arg) { struct st_server_s* st = (struct st_server_s*)arg; sock client_fd = SOCKET_ERROR; struct sockaddr_in socketaddress; socklen_t size = sizeof(struct sockaddr); sock listen_fd = ox_socket_listen(4002, 25); if(SOCKET_ERROR != listen_fd) { for(;1;) { while((client_fd = accept(listen_fd, (struct sockaddr*)&socketaddress, &size)) < 0) { if(EINTR == sErrno) { continue; } } if(SOCKET_ERROR != client_fd) { ox_socket_nodelay(client_fd); ox_stserver_addfd(st, client_fd); } } listen_fd = SOCKET_ERROR; } else { printf("listen failed\n"); } }