Esempio n. 1
0
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);
}
Esempio n. 2
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");
    }
}