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,一直没有数据接收,谁能帮看看这代码哪里出了问题了????...相关推荐

  1. linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全

    /proc 虚拟的目录,是系统内存的映射.可直接访问这个目录来获取系统信息.其中也包含下面的信息: 主机CPU信息:cpuinfo 主机DMA通道信息:dma 文件系统信息:filesystems 主 ...

  2. linux查看显卡核心数,linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 | 帮助信息-动天数据...

    linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 作者:dthost | 时间:2015-09-30 | 8,325 次阅读 linux服务器 ...

  3. 通过命令查看linux 密码,linux查看用户密码(linux查看用户密码命令)

    linux查看用户密码(linux查看用户密码命令) 2020-05-15 13:18:30 共10个回答 1.用户名和密码的存储位置存储帐号的文件:/etc/passwd存储密码的文件:/etc/s ...

  4. linux查看程序的快捷键,linux操作系统的快捷键及命令讲解

    GNU是为Linux提供免费软件支持的工具;红帽与乌邦图都是Linux的一个版本. Linux登入时登入名为root的是最高级别 Linux系统中的文件夹: /:根目标 bin:二进制可执行文件 li ...

  5. linux 查看was端口,Linux如何查看端口状态

    查看并发状态 # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 这条语句返回结果如下 LAST_ACK 5 ...

  6. linux查看端口物理状态,Linux查看端口使用状态及启动

    LINUX网络性能之管理工具三剑客 本文是介绍管理Linux查看端口这些输出信息,该命令将显示从每个数据包传出的头和来自主机hostname对端口80的编址. Netstat -tln 命令是Linu ...

  7. linux查看根目录使用率,Linux 查看空间使用情况的实例详解

    Linux 查看空间使用情况的实例详解 在日常的Linux巡检中,我们会遇到文件系统目录使用空间很高的情况,例如如下利用"df -h "查看到根目录空间使用超过80%.而我们仅仅知 ...

  8. linux查看设备硬件,linux查看硬件信息及驱动设备相关整理

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 联系我登录 首页 业界新闻 技术文章 资源分享 微语 linux查看硬件信息及驱动设备相关整理[转] 蓝猫 发布于:2014-5-30 17:48 分类: ...

  9. linux系统程序问题报告,Linux程序设计实验报告.docx

    Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...

  10. linux查看告警日志,linux怎么查看硬件告警

    想知道怎么查看Linux中的硬件告警吗?下面是学习啦小编带来的关于linux怎么查看硬件告警的内容,欢迎阅读! Linux查看硬件告警方法一: Linux系统拥有非常灵活和强大的日志功能,可以保存几乎 ...

最新文章

  1. IOS tableView删除数据
  2. Spring 系列: Spring 框架简介
  3. android项目获得所有运行程序
  4. 【数据结构与算法】之深入解析“太平洋大西洋水流问题”的求解思路与算法示例
  5. 【计算机网络】为什么一个路由器会有两个wifi信号
  6. 教你如何优雅的改写“if-else”
  7. MySQL数据库基础(外键约束、添加索引)
  8. 解读mysql的索引和事务的正确姿势
  9. OpenCV总结:目标跟踪之CamShift算法
  10. win10查询计算机ip和用户名和密码,Win10系统查询计算机IP子网掩码和默认网关设置教程...
  11. 计算机专业的需要考研么?
  12. JS—C11库仑计说明书,js-c11库仑计说明书
  13. android 半透明背景
  14. python3__机器学习__神经网络基础算法__偏执项b
  15. rabbit 消息丢失
  16. android wifi分析 实现原理,android framework wifi 开启原理
  17. 汽车诊断工程师的黎明:并行刷写策略与实现
  18. sketchup制作模型加载进cesium
  19. 《看聊天记录都学不会C语言?太菜了吧》(1)我在大佬群里问基础问题没人理?
  20. android 自定义铃声 代码,Android通过代码设置铃声

热门文章

  1. 分析NTFS文件系统内部结构
  2. php防止文件盗链,如何在PHP程序中防止盗链
  3. 网络定向爬虫实例---淘宝商品信息比价
  4. 轻量级WEB服务器Nginx介绍
  5. 给初中级JAVA准备的面试题,致竞争激烈的秋招面试(自己总结)
  6. 31:第三章:开发通行证服务:14:开发【获得用户基本信息,接口】;(需要根据前端对返回数据的要求,创建一个只包含非隐私信息的AppUserVO类,去包装返回给前端的数据)
  7. 值得回忆的本科四年学习
  8. java如何避免内存溢出_java怎样防止内存溢出
  9. [经验教程]淘宝粉丝福利购优惠券入口在哪里怎么找到?
  10. django集成vue,实现前后端分离开发