Exemplo n.º 1
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;
}
Exemplo n.º 2
0
INT socket( INT protocolFamily, INT type, INT protocol )
{
    int a = 0;
    bsd_socket_t* free_socket;

    if ( wwd_wifi_is_ready_to_transceive( WWD_STA_INTERFACE ) == WWD_SUCCESS )
    {
        interface = WWD_STA_INTERFACE;
    }
    else if ( wwd_wifi_is_ready_to_transceive( WWD_AP_INTERFACE ) == WWD_SUCCESS )
    {
        interface = WWD_AP_INTERFACE;
    }
    else
    {
        return BSD_ERROR;
    }

    if ( socket_layer_inited == WICED_FALSE )
    {
        sockets_layer_init( );
    }

    // Find a free socket
    for ( ; a < MAX_BSD_SOCKETS; ++a )
    {
        if ( sockets[a].available == WICED_TRUE )
        {
            free_socket = &sockets[a];
            free_socket->available        = WICED_FALSE;
            free_socket->select_timeout   = NX_WAIT_FOREVER;
             free_socket->local_bind_port = 0;
            free_socket->reuse            = WICED_FALSE;

            switch ( type )
            {
                case SOCK_DGRAM:
                    free_socket->type = BSD_SOCKET_UDP;
                    /* Set option to maximum throughput delivery */
                    if ( nx_udp_socket_create( &wiced_ip_handle[interface], &free_socket->socket.udp, "udp_socket", NX_IP_MAX_DATA, NX_FRAGMENT_OKAY, 255, 5) != NX_SUCCESS )
                    {
                        return BSD_ERROR;
                    }
#ifdef IPERF_DISABLE_UDP_CHECKSUM
                    nx_udp_socket_checksum_disable(&free_socket->socket.udp);
#endif
                    break;
                case SOCK_STREAM:
                    free_socket->type = BSD_SOCKET_TCP;
                    /* Set option to maximum throughput delivery */
                    if ( nx_tcp_socket_create( &wiced_ip_handle[interface], &free_socket->socket.tcp, "tcp_socket", NX_IP_MAX_DATA, NX_FRAGMENT_OKAY, NX_IP_TIME_TO_LIVE, TCP_WINDOW_SIZE, NX_NULL, NX_NULL ) != NX_SUCCESS )
                    {
                        return BSD_ERROR;
                    }
                    break;
            }

            return a;
        }
    }

    return BSD_ERROR;
}