Beispiel #1
0
INT connect( INT sockID, struct sockaddr *remoteAddress, INT addressLength )
{
    switch ( sockets[sockID].type )
    {
        case BSD_SOCKET_TCP:
        {
            if ( !sockets[sockID].socket.tcp.nx_tcp_socket_bound_next )
            {
                nx_tcp_client_socket_bind( &sockets[sockID].socket.tcp, sockets[sockID].local_bind_port, NX_WAIT_FOREVER );
            }
            if ( remoteAddress->sa_family == AF_INET )
            {
                if ( nx_tcp_client_socket_connect( &sockets[sockID].socket.tcp, htonl( SOCK4_ADDRESS(remoteAddress) ), hton16(SOCK4_PORT(remoteAddress)), NX_WAIT_FOREVER ) == NX_SUCCESS )
                {
                    return BSD_SUCCESS;
                }
            }
            break;
        }
        case BSD_SOCKET_UDP:
            return BSD_ERROR;
            break;
    }

    return BSD_ERROR;
}
Beispiel #2
0
int ConnectNetwork(Network* n, char* addr, unsigned int port)
{
  UINT status;
  UCHAR record_buffer[200];
  UINT record_count;
  UINT error_count = 0;

  status = nx_tcp_socket_create(n->my_ip, &n->my_socket, "MqttSocket", NX_IP_NORMAL, NX_DONT_FRAGMENT, NX_IP_TIME_TO_LIVE, 512, NX_NULL, NX_NULL);
  if (status)error_count++;
  status =  nx_tcp_client_socket_bind(&n->my_socket, NX_ANY_PORT, 10000);
  if (status)error_count++;

  if( strncmp("http://", addr, sizeof("http://")) == 0 ) {
      status = nx_dns_server_add(&g_dns0, IP_ADDRESS(8,8,8,8));
      if (status)error_count++;
      status = nx_dns_ipv4_address_by_name_get(&g_dns0, (UCHAR*)addr, (VOID *)&record_buffer[0], 200, &record_count, 400);
      if (status)error_count++;
      n->byte_ip = *((ULONG *)(record_buffer));
  } else {
      int ip1,ip2,ip3,ip4;
      sscanf(addr,"%d.%d.%d.%d",&ip1,&ip2,&ip3,&ip4);
      n->byte_ip = IP_ADDRESS(ip1,ip2,ip3,ip4);
  }
  status =  nx_tcp_client_socket_connect(&n->my_socket, n->byte_ip, port, 2000);
  if (status)error_count++;
  if (error_count != 0)
	  return -1;
  return 0;
}