使用鸿蒙Hi3861完成连接WiFi热点并使用TCPSocketServ
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。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |