一、TCP代码如下,wifi_connect()失败
#define CONFIG_WIFI_SSID "BearPi_Pico_H3863" //要连接的WiFi 热点账号
#define CONFIG_WIFI_PWD "123456789" //要连接的WiFi 热点密码
#define CONFIG_CLIENT_PORT 8888 //要连接的服务器端口
#define TCP_BACKLOG 10
//在sock_fd 进行监听,在 new_fd 接收新的链接
int sock_fd, new_fd;
char recvbuf[512];
char* buf = "Hello! I'm BearPi-HM_Nano TCP Server!";
int tcp_server_sample_task(void *param)
{
param = param;
//在sock_fd 进行监听,在 new_fd 接收新的链接
int sock_fd, new_fd;
//服务端地址信息
struct sockaddr_in server_sock;
//客户端地址信息
struct sockaddr_in client_sock;
int sin_size;
struct sockaddr_in* cli_addr;
//连接Wifi
wifi_connect(CONFIG_WIFI_SSID, CONFIG_WIFI_PWD);
//创建socket
if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
printf("socket is error\r\n");
return 0;
}
bzero(&server_sock, sizeof(server_sock));
server_sock.sin_family = AF_INET;
server_sock.sin_addr.s_addr = htonl(INADDR_ANY);
server_sock.sin_port = htons(CONFIG_CLIENT_PORT);
//调用bind函数绑定socket和地址
if (bind(sock_fd, (struct sockaddr*)&server_sock, sizeof(struct sockaddr)) == -1) {
printf("bind is error\r\n");
return 0;
}
//调用listen函数监听(指定port监听)
if (listen(sock_fd, TCP_BACKLOG) == -1) {
printf("listen is error\r\n");
return 0;
}
printf("start accept\n");
//调用accept函数从队列中
while (1) {
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sock_fd, (struct sockaddr*)&client_sock, (socklen_t*)&sin_size)) == -1) {
printf("accept");
continue;
}
cli_addr = malloc(sizeof(struct sockaddr));
printf("accept addr\r\n");
if (cli_addr != NULL) {
memcpy(cli_addr, &client_sock, sizeof(struct sockaddr));
}
//处理目标
ssize_t ret;
while (1) {
if ((ret = recv(new_fd, recvbuf, sizeof(recvbuf), 0)) == -1) {
printf("recv error \r\n");
}
printf("recv :%s\r\n", recvbuf);
sleep(2);
if ((ret = send(new_fd, buf, strlen(buf) + 1, 0)) == -1) {
printf("send : ");
}
sleep(2);
}
close(new_fd);
}
}
static void TCPServerDemo(void)
{
osThreadAttr_t attr;
attr.name = "TCPServerTask";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = 10240;
attr.priority = osPriorityNormal;
if (osThreadNew((osThreadFunc_t)tcp_server_sample_task, NULL, &attr) == NULL) {
printf("[TCPServerDemo] Failed to create TCPServerTask!\n");
}
printf("[TCPServerDemo] Success to create TCPServerTask!\n");
}
app_run(TCPServerDemo);
二、报错如下
hmac_single_hal_device_scan_complete:vap[2] time[879] chan_cnt[13] chan_0[11] back[1] event[6] mode[1]
Scan::vap[2] find bss_num[64] in regdomain, other bss_num[0]
Srv:548:receive event = 1
APP|[WIFI_STA_SAMPLE]::Scan done!.
Srv:1724:sta_scan_results cnt 64
APP|[WIFI_STA_SAMPLE]::Do not find AP, try again !
APP|[WIFI_STA_SAMPLE]::Scan start!
drv_soc_ioctl ioctl_cmd->cmd=14.