server系统上开启热点服务器,使用Hi3861完成连接wifi热点并启动TCPSocketServer

这次使用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、启动WifiEnableWifi();

3、设置Wifi热点信息,并返回NetworkIdWifiDeviceConfig 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。int connfd = -1;

connfd = accept(sockfd, (struct sockaddr *)&clientAddr, &clientAddrLen);

recv(connfd, request, sizeof(request), 0);

send(connfd, request, strlen(request), 0);

3、关闭TcpSocketServerlwip_close(connfd);

lwip_close(socketfd);

四、联网结束,关闭DHCP客户端,断开Wifi,移除热点的配置信息,禁用Wifi。err_t ret = netifapi_dhcp_stop(iface);

Disconnect();

RemoveDevice(netId);

DisableWifi();

五、测试情况如下:

1、启动开发板,连接Wifi热点,启动TcpServer

39813dda5a113771a94f2cb0c6d5d060.png2、TcpClient(网络调试助手)连接开发板的TcpServer(HiBurn)。

d6fa9c680741bf759bd21c7a35d7ae7c.png

c7f809ea4e81f2e6bca0bddfd6a12e2f.png3、TcpClient输入数据并发送,TcpServer接收后再发送回TcpClient。

2acb36a2f54684de655f343d34e43dca.png

ed7acd37ee2b2758dea978cfdc104664.png

六、全部源代码,我都注释了,希望大家能够有所参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值