RL-TCPnet BSD UDP
使用RL-TCPnet 之 BSD Socket 客户端的代码修改而来,原来是TCP,现改为UDP,代码如下,连接远程服务器能够成功,可是接收函数却提示无效的socket号,不知道是什么原因
{
// int len;
int sock, res;
uint8_t ip;
SOCKADDR_IN addr;
char rBuf;
while (1)
{
/* 创建一个socket
第1个参数AF_INET:当前仅支持这个类型的地址族。
第2个参数SOCK_DGRAM:表示数据流通信类型,即使用的UDP。
第3个参数0 :配置为0的话,自动跟第2个参数进行协议匹配,这里就是UDP协议。
*/
sock = socket (AF_INET, SOCK_DGRAM, 0);
/* 端口号设置为1001 */
addr.sin_port = htons(atoi((char *)para_t.port3));
/* 与函数socket中的AF_INET作用一样 */
addr.sin_family = PF_INET;
bps_user_lib_ip_asc_int(ip, para_t.ip3, strlen((char *)para_t.ip3)) ;
addr.sin_addr.s_b1 = ip;
addr.sin_addr.s_b2 = ip;
addr.sin_addr.s_b3 = ip;
addr.sin_addr.s_b4 = ip;
/* 客户端连接远程服务器,如果远程服务器还未创建,此函数会立即返回 */
res = connect (sock, (SOCKADDR *)&addr, sizeof (addr));
printf("客户端连接远程服务器状态%s\r\n", ReVal_Table);
while (1)
{
res = recv (sock, rBuf, sizeof(rBuf), 0);
if (res > 0)
{
bsp_user_lib_printf_hex("net",(uint8_t *)rBuf,res);
res = send (sock, (char *)rBuf, res, 0);
if (res < 0)
{
printf("函数send发送数据失败%s\r\n", ReVal_Table);
}
else
{
printf("函数send成功发送数据 = %d字节\r\n", res);
}
}
else
{
if((res == SCK_EINVALID) || (res == SCK_ECLOSED))
{
printf("客户端:%d 接收函数返回状态%s\r\n", sock,ReVal_Table);
break;
}
}
}
/*
远程服务器断开连接和sock句柄无效,程序都会执行到这里,我们在这里关闭socket,
程序返回到第一个大while循环的开头重新创建socket并连接。
*/
closesocket (sock);
os_dly_wait(30000);
}
}
看程序,没啥问题。
测试下原始Socket方式的UDP,看看你的工程正常不。
eric2013 发表于 2019-10-14 15:19
看程序,没啥问题。
测试下原始Socket方式的UDP,看看你的工程正常不。
Eric2013,您好!
我刚测试了最原始的UDP,收发都正常 ymh792260950 发表于 2019-10-14 15:40
Eric2013,您好!
我刚测试了最原始的UDP,收发都正常
那就没问题了,估计还是哪里设置好的问题,多试试。
最近我在弄新版RL-TCPnet v7.x的教程了,届时BSD的TCP和UDP全做了,分享代码给大家。
附件为俩者的对比信息 eric2013 发表于 2019-10-14 15:55
那就没问题了,估计还是哪里设置好的问题,多试试。
最近我在弄新版RL-TCPnet v7.x的教程了,届时BSD的T ...
V7.x的,确实盼望好久了:lol 带附件是不是传不了呢,再上传一下 ymh792260950 发表于 2019-10-14 16:07
带附件是不是传不了呢,再上传一下
这个好弄,后面我分享例子给大家 eric2013 发表于 2019-10-14 17:03
这个好弄,后面我分享例子给大家
发送正常,就是接收返回值为-2,有空测试下:lol,搞一天了,看了好多资料,没找到原因,明天继续。。。 eric2013 发表于 2019-10-14 17:03
这个好弄,后面我分享例子给大家
ppp connect successful
017.7 UDP:Socket 1 allocated
017.7 BSD:Socket 1 allocated
017.7 BSD: Type SOCK_DGRAM
017.7 BSD:Connect Socket 1
017.7 UDP:Open Socket 1, LocPort 0
017.7 UDP: LocPort 1024 assigned
017.7 BSD: Dgram socket 1 connected
客户端连接远程服务器状态 0: SCK_SUCCESS Success
017.7 BSD:Send/to Socket 1
017.7 UDP:Send Socket 1, 12 bytes
017.7 UDP: Src. Port: 1024
017.7 UDP: Dest.Port: 7240
017.7 UDP: Checksum : 0xAA00
017.7 UDP: Length : 20 bytes
017.7 BSD: Sent 12 bytes
027.7 BSD:Recv/from Socket 1
027.7 BSD-ERR:Recv, Socket 1 wrong state
客户端:1 接收函数返回状态-2: SCK_EINVALID Invalid socket descriptor
027.7 BSD:Closesocket 1
027.7 UDP:Close Socket 1
027.7 UDP:Release Socket 1 eric2013 发表于 2019-10-14 17:03
这个好弄,后面我分享例子给大家
Eric2013,您好!
这些天找了很多资料,还是没有整明白mdk474 RL-TCPnet BSD UDP接收的问题,您有计划测试下,然后增加这个例程不,我手上用的是V5的开发板 ymh792260950 发表于 2019-10-19 21:47
Eric2013,您好!
这些天找了很多资料,还是没有整明白mdk474 RL-TCPnet BSD UDP接收的问题,您有计 ...
最近没有。
页:
[1]