Beispiel #1
0
moved_client *
moved_client_create(const char *hostname)
{
    psmove_port_initialize_sockets();

    moved_client *client = (moved_client*)calloc(1, sizeof(moved_client));

    client->request_buf.header.request_sequence = 1;

    client->hostname = strdup(hostname);

    client->socket = (int)socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    assert(client->socket != -1);

    psmove_port_set_socket_timeout_ms(client->socket, MOVED_TIMEOUT_MS);

    client->moved_addr.sin_family = AF_INET;
    client->moved_addr.sin_port = htons(MOVED_UDP_PORT);
    client->moved_addr.sin_addr.s_addr = inet_addr(hostname);

    // If hostname failed to convert to an address, it's probably an actual name, so try to resolve the name to IP
    if (client->moved_addr.sin_addr.s_addr == INADDR_NONE)
    {
        struct hostent *remoteHost = gethostbyname(hostname);

        if (remoteHost->h_addrtype == AF_INET) 
            client->moved_addr.sin_addr.s_addr = *(u_long *)remoteHost->h_addr_list[0];
    }

    //assert(client->moved_addr.sin_addr.s_addr != INADDR_NONE);

    return client;
}
Beispiel #2
0
moved_server::moved_server()
{
    psmove_port_initialize_sockets();

    socket = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    assert(socket != -1);

    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(MOVED_UDP_PORT);
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

    if (bind(socket, (struct sockaddr *)&(server_addr), sizeof(server_addr)) == -1) {
        fprintf(stderr, "Could not bind to UDP port %d", MOVED_UDP_PORT);
        exit(1);
    }
}