加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

使用鸿蒙Hi3861完成连接WiFi热点并使用TCPSocketServ

发布时间:2021-06-02 15:18:58 所属栏目:移动互联 来源:互联网
导读:这次行使Hi3861来完成Wifi热门的毗连,并启动TCP SocketServer,吸取动静并将动静反馈TcpCLient。 一、毗连Wifi热门 。首要做法是启动开拓板Wifi,然后配置热门

1、先界说两个Wifi监听器,一个毗连改变、一个状态改变,并注册监听器。个中重要的是OnWifiConnectionChanged毗连状态变乱处理赏罚函数。该函数会在毗连乐成后配置全局变量g_connected=1,代表已经毗连乐成。

WifiEvent eventListener = { 

  .OnWifiConnectionChanged = OnWifiConnectionChanged, 

  .OnWifiScanStateChanged = OnWifiScanStateChanged 

}; 

WifiErrorCode errCode = RegisterWifiEvent(&eventListener); 

 

void OnWifiConnectionChanged(int state, WifiLinkedInfo* info) { 

  if (!info) return; 

 

  if (state == WIFI_STATE_AVALIABLE) { 

    g_connected = 1; 

  } else { 

    g_connected = 0; 

  } 

2、启动Wifi

EnableWifi(); 

3、配置Wifi热门信息,并返回NetworkId

WifiDeviceConfig apConfig = {}; 

strcpy(apConfig.ssid, "MyWifi"); 

strcpy(apConfig.preSharedKey, "12345678"); 

apConfig.securityType = WIFI_SEC_TYPE_PSK; 

 

int netId = -1; 

AddDeviceConfig(&apConfig, &netId); 

4、毗连热门,留意此时的g_connected变量,true代表已毗连,false代表未毗连。这个状态在变乱处理赏罚函数中配置。未毗连乐成时,体系会轮回守候,知道变乱配置该值。

ConnectTo(netId); 

while (!g_connected) { 

  osDelay(10); 

二、举办联网,找到wlan0的network interface,然后启动DHCP客户端,获取IP地点。

struct netif* iface = netifapi_netif_find("wlan0"); 

if (iface) { 

  err_t ret = netifapi_dhcp_start(iface); 

  osDelay(300); 

三、启动TcpSocketServer,并收动员静

1、建设SocketServer,配置处事端口,并启动监听

int sockfd = socket(AF_INET, SOCK_STREAM, 0); 

 

struct sockaddr_in serverAddr = {0}; 

serverAddr.sin_family = AF_INET; 

serverAddr.sin_port = htons(port); 

serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); 

bind(sockfd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); 

 

int backlog = 1; 

listen(sockfd, backlog) 

2、客户端毗连。吸取客户端动静并发送归去。留意毗连后,会建设一个新的Socket File Description。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读