社区
C语言
帖子详情
C语言udp服务器接收BC95模块发送的十六进制数据
qq_34566140
2017-10-18 11:10:25
通过编写的udp服务器,通过socket调试工具发送十六进制数据,接收到的数据正常,但是通过开发板BC95模块发送的数据接收出错,我是直接通过unsigned char数组来接收数据的,想问问是什么原因
...全文
463
4
打赏
收藏
C语言udp服务器接收BC95模块发送的十六进制数据
通过编写的udp服务器,通过socket调试工具发送十六进制数据,接收到的数据正常,但是通过开发板BC95模块发送的数据接收出错,我是直接通过unsigned char数组来接收数据的,想问问是什么原因
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xian_wwq
2017-10-19
打赏
举报
回复
是的,字符串是靠‘\0’来判定是否结束的 这对于byte[]的接收不适用 一般都是包头携带数据长度,根据数据长度来判定是否结束
老马何以识途
2017-10-18
打赏
举报
回复
用strlen来判断接收数据大小,只适用于该数据刚好是字符串的情况,BC95_Senddata是如何发送数据的,你清楚吗?若不知道,改成直接把buf全部打印出来,研究一下。
qq_34566140
2017-10-18
打赏
举报
回复
void print_client_info(const struct sockaddr_in *client_addr)
{
char ipstr[128] = {0};
inet_ntop(AF_INET, &(client_addr->sin_addr).s_addr, ipstr, sizeof(ipstr));
int client_port = ntohs(client_addr->sin_port);
printf("client IP = %s, PORT = %d\n", ipstr, client_port);
}
int main(int agrc, const char *argv[])
{
int socket_fd;
socklen_t addr_len;
struct sockaddr_in serveraddr, clientaddr;
unsigned char buf[MAXLINE] = {0};
bzero(&serveraddr, sizeof(serveraddr));
bzero(&clientaddr, sizeof(clientaddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(SERVER_PORT);
addr_len = sizeof(clientaddr);
socket_fd = socket(AF_INET, SOCK_DGRAM, 0);
bind(socket_fd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
while(1) {
addr_len = sizeof(clientaddr);
memset(buf, 0, sizeof(buf));
recvfrom(socket_fd, buf, sizeof(buf), 0, (struct sockaddr *)&clientaddr, &addr_len);
print_client_info(&clientaddr);
// printf("recive from client:\n %s\n",buf);
printf("buf大小: %d\n",strlen(buf));
for(int i = 0; i < strlen(buf); i++) {
buf[i] = toupper(buf[i]);
printf("%X\n",buf[i]);
}
printf("\n");
sendto(socket_fd, buf, strlen(buf), 0, (const struct sockaddr *)&clientaddr, sizeof(clientaddr));
}
close(socket_fd);
return 0;
}
老马何以识途
2017-10-18
打赏
举报
回复
你都没说具体出错信息,怎么帮你
C语言
--视频精讲
C语言
作为被长期使用的编程语言,可以被运用到各种操作系统,游戏,开发中。本课程作为互联网上首家使用C99录制的
C语言
教程,展现了全面、专业。标准的
C语言
教程。可以帮助学员从基础开始一点点的深刻理解
C语言
。
NBIOT(BC35、BC26、BC28) AT指令通过HTTP连接onenet平台
发送
温湿度GPS定位,HTTP协议请求详解
设计HTTP最初的目的是为了提供一种发布和
接收
HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展...
C/C++笔试题(很多)
广播:主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以
接收
到所有信息(不管你是否需要). 8。多播采用的协议是什么? 9。在c++中纯虚...
Linux系统管理常用命令
在没有分区和格式化
数据
盘之前,使用 “df –h”命令,是无法看到
数据
盘的,可以使用“fdisk -l”命令查看。 1) 磁盘操作及分区 fdisk : # fdisk -l # 查看所有分区 # swapon -s # 查看所有交换...
软件设计师知识体系归纳总结
(3) 二进制 八进制
十六进制
的转换 2.原码 反码 补码 移码 2.1相互关系 原码->反码->补码->移码 原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 第一位是符号位. 因为第一位是...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章