嵌入式技术william hill官网
直播中

jsqueh

9年用户 1226经验值
私信 关注
[问答]

NB-IOT模块BC28在socket上进行监听失败怎么办

一、BC28初始化完成,联网完成

[I/at.dev.bc28] bc28 device network initialize success.

1.jpg

二、获取网卡对象,没有提示失败

netdev = netdev_get_by_name("bc28");
if (netdev == RT_NULL)
{
rt_kprintf("get network interface device(%s) failed.\n", "bc28");
}

三、创建socket,没有提示失败

if ((sock = socket(AF_AT, SOCK_STREAM, 0)) == -1)
{
/* 创建失败的错误处理 */
LOG_E("Socket error\n");
return;
}

四、绑定socket到服务器,没有提示失败

server_addr.sin_family = AF_AT;
server_addr.sin_port = htons(2404); /* 服务端工作的端口 /
// server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_addr.s_addr = netdev->ip_addr.addr;
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
/
绑定socket到服务端地址 */
if (bind(sock, (struct sockaddr )&server_addr, sizeof(struct sockaddr)) == -1)
{
/
绑定失败 */
LOG_E("Unable to bind\n");
return;
}

五、在socket上进行监听,返回-1,失败

if (listen(sock, 2) == -1)
{
LOG_E("Listen error\n");
return;
}

六、调试

1.jpg

回帖(4)

李辉

2022-10-31 15:17:49
印象中AT组件不支持错服务器吧
举报

jsqueh

2022-10-31 15:18:04
像N58这样的模块具有侦听功能,可以作为服务端,是RTT没做适配吗?
1.jpg
举报

李辉

2022-10-31 15:18:14
AT组件没有适配作为服务器的用法。
但是你的模组支持的话,就可以自己写程序给模组发送响应的指令 AT+TCPLISTEN 来作为服务器,而不要用 rtt 自带的 listen 函数
举报

李桂兰

2022-10-31 15:18:26
NB模块的公网IP是多少?能支持做服务器吗?应该是不会让模块这边做服务器的,不然你IP暴露了,流量费及通讯阻塞都是大问题。

仅从代码上看,是没有listen接口。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分