linux查看程序recvfrom,linux udp 客户端recvfrom,一直没有数据接收,谁能帮看看这代码哪里出了问题了????...
void* StartDiscoveryThread(void *arg)
{
int so_broadcast=1;
struct sockaddr_in toAddr; //客户端的网络地址。
struct sockaddr_in serverAddr; //服务器端的网络地址。
char inBuff[DD_BUFF_LEN];
int sockaddrLen = 0;
int inLen;
int ret;
NETPARAM stRespond = {0};
int rsock = createUDPSokcet(TF6x0_PORT);
while(1)
{
sockaddrLen = sizeof(toAddr);
inLen = recvfrom(rsock, inBuff, DD_BUFF_LEN, 0, (struct sockaddr*)&toAddr,(socklen_t*)&sockaddrLen);
if(inLen<=0)
{
DD_DEBUG("recv failed! skip, continue ...");
sleep(1);
}
else
{
ret = memcmp(inBuff,CONST_MESSAGE,strlen(CONST_MESSAGE));
if(0!=ret)
{
continue;
}
else
{
填充需要发送的信息
netGetIPAddr(DD_IFace, &(stRespond.ip));
stRespond.dev_model = 1111;
///toAddr.sin_addr.s_addr = inet_addr("255.255.255.255");
///toAddr.sin_port = htons(TF6x0_PORT);
sockaddrLen = sizeof(struct sockaddr);
ret = sendto(rsock,&stRespond,sizeof(stRespond),0,(struct sockaddr*)&toAddr, sizeof(toAddr));
if(ret < 0)
{
printf("send failed!\n");
}
else
{
printf("server sned to client(ip:%s port:%d)success ret=%d %d\n", inet_ntoa(toAddr.sin_addr),ntohs(toAddr.sin_port), ret, __LINE__);
continue;
}
}
}
sleep(3);
}
close(rsock);
///close(wsock);
return NULL;
}
int DiscoveryClientHandle(std::list &lis)
{
int sock = -1, retVal = -1;
int fBroadcast;
struct sockaddr_in addrSrc;
struct sockaddr_in addrDst;
int sockaddrLen = sizeof(struct sockaddr_in);
NETPARAM resp;
char buf[1024] = {0};
if(sock<0)
{
sock = createUDPSokcet(LOCAL_PORT);
memset(&addrSrc, 0, sockaddrLen);
addrSrc.sin_family = AF_INET;
addrSrc.sin_addr.s_addr = htonl(INADDR_BROADCAST);
addrSrc.sin_port = htons(LOCAL_PORT);
memset(&addrDst, 0, sockaddrLen);
addrDst.sin_family = AF_INET;
addrDst.sin_addr.s_addr = htonl(INADDR_BROADCAST);
addrDst.sin_port = htons(TF6x0_PORT);
retVal = sendto(sock, CONST_MESSAGE,strlen(CONST_MESSAGE),0,(struct sockaddr*)&addrDst, sizeof(addrDst));
if (retVal <0)
{
printf("DiscoveryClientHandle send faile\n");
}
else
{
do
{
sockaddrLen = sizeof(addrSrc);
printf("client send %s to(ip:%s, prot:%d) success, now accept the server info line:%d \n",CONST_MESSAGE, inet_ntoa(addrDst.sin_addr),ntohs(addrDst.sin_port), __LINE__);
retVal = recvfrom(sock, buf, 1024, 0, (struct sockaddr *)&addrSrc, (socklen_t*)&sockaddrLen);
if(-1 == retVal)
{
printf("recvfrom error------------------\n");
break;
}
else
{
printf("get ip(%d.%d.%d.%d) dev_model=%d!\r\n", (resp.ip)&0xff, (resp.ip>>8)&0xff, (resp.ip>>16)&0xff, (resp.ip>>24)&0xff,resp.dev_model);
lis.push_back(resp);
}
usleep(1000);
}while(1);
}
}
close(sock);
return 1;
}
int devDiscovery(void)
{
int ret;
if(0!=Discoveryid) return -1;
ret= pthread_create(&Discoveryid,0,StartDiscoveryThread,0);
return ret;
}
上面代码有一个是个服务端 被搜索的代码,客户端广播一个搜索信号,如果设备接收到客户端的搜索信息,就把设备的ip以及一些信息发送到客户端,客户端对这些信息进行保存,说白了就是一个搜索设备的两端,现在的问题是客户端接收不到信息,一直卡在recvfrom这里,我这里暂时没做超时处理和非阻塞。我想问这里到底什么问题???????????
linux查看程序recvfrom,linux udp 客户端recvfrom,一直没有数据接收,谁能帮看看这代码哪里出了问题了????...相关推荐
- linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全
/proc 虚拟的目录,是系统内存的映射.可直接访问这个目录来获取系统信息.其中也包含下面的信息: 主机CPU信息:cpuinfo 主机DMA通道信息:dma 文件系统信息:filesystems 主 ...
- linux查看显卡核心数,linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 | 帮助信息-动天数据...
linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 作者:dthost | 时间:2015-09-30 | 8,325 次阅读 linux服务器 ...
- 通过命令查看linux 密码,linux查看用户密码(linux查看用户密码命令)
linux查看用户密码(linux查看用户密码命令) 2020-05-15 13:18:30 共10个回答 1.用户名和密码的存储位置存储帐号的文件:/etc/passwd存储密码的文件:/etc/s ...
- linux查看程序的快捷键,linux操作系统的快捷键及命令讲解
GNU是为Linux提供免费软件支持的工具;红帽与乌邦图都是Linux的一个版本. Linux登入时登入名为root的是最高级别 Linux系统中的文件夹: /:根目标 bin:二进制可执行文件 li ...
- linux 查看was端口,Linux如何查看端口状态
查看并发状态 # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 这条语句返回结果如下 LAST_ACK 5 ...
- linux查看端口物理状态,Linux查看端口使用状态及启动
LINUX网络性能之管理工具三剑客 本文是介绍管理Linux查看端口这些输出信息,该命令将显示从每个数据包传出的头和来自主机hostname对端口80的编址. Netstat -tln 命令是Linu ...
- linux查看根目录使用率,Linux 查看空间使用情况的实例详解
Linux 查看空间使用情况的实例详解 在日常的Linux巡检中,我们会遇到文件系统目录使用空间很高的情况,例如如下利用"df -h "查看到根目录空间使用超过80%.而我们仅仅知 ...
- linux查看设备硬件,linux查看硬件信息及驱动设备相关整理
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 联系我登录 首页 业界新闻 技术文章 资源分享 微语 linux查看硬件信息及驱动设备相关整理[转] 蓝猫 发布于:2014-5-30 17:48 分类: ...
- linux系统程序问题报告,Linux程序设计实验报告.docx
Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...
- linux查看告警日志,linux怎么查看硬件告警
想知道怎么查看Linux中的硬件告警吗?下面是学习啦小编带来的关于linux怎么查看硬件告警的内容,欢迎阅读! Linux查看硬件告警方法一: Linux系统拥有非常灵活和强大的日志功能,可以保存几乎 ...
最新文章
- IOS tableView删除数据
- Spring 系列: Spring 框架简介
- android项目获得所有运行程序
- 【数据结构与算法】之深入解析“太平洋大西洋水流问题”的求解思路与算法示例
- 【计算机网络】为什么一个路由器会有两个wifi信号
- 教你如何优雅的改写“if-else”
- MySQL数据库基础(外键约束、添加索引)
- 解读mysql的索引和事务的正确姿势
- OpenCV总结:目标跟踪之CamShift算法
- win10查询计算机ip和用户名和密码,Win10系统查询计算机IP子网掩码和默认网关设置教程...
- 计算机专业的需要考研么?
- JS—C11库仑计说明书,js-c11库仑计说明书
- android 半透明背景
- python3__机器学习__神经网络基础算法__偏执项b
- rabbit 消息丢失
- android wifi分析 实现原理,android framework wifi 开启原理
- 汽车诊断工程师的黎明:并行刷写策略与实现
- sketchup制作模型加载进cesium
- 《看聊天记录都学不会C语言?太菜了吧》(1)我在大佬群里问基础问题没人理?
- android 自定义铃声 代码,Android通过代码设置铃声
热门文章
- 分析NTFS文件系统内部结构
- php防止文件盗链,如何在PHP程序中防止盗链
- 网络定向爬虫实例---淘宝商品信息比价
- 轻量级WEB服务器Nginx介绍
- 给初中级JAVA准备的面试题,致竞争激烈的秋招面试(自己总结)
- 31:第三章:开发通行证服务:14:开发【获得用户基本信息,接口】;(需要根据前端对返回数据的要求,创建一个只包含非隐私信息的AppUserVO类,去包装返回给前端的数据)
- 值得回忆的本科四年学习
- java如何避免内存溢出_java怎样防止内存溢出
- [经验教程]淘宝粉丝福利购优惠券入口在哪里怎么找到?
- django集成vue,实现前后端分离开发