当前位置:  技术问答>linux和unix

socket阻塞的问题

    来源: 互联网  发布时间:2017-01-06

    本文导语:  各位大虾,小弟在调试8688的wifi过程当中发现,连接ap时发送psk密码的命令会延时很长时间。然后一路跟踪,发现在wpa_supplicant的代码中有这么一段: if (send(ctrl->s, _cmd, _cmd_len, 0) s, &rfds); res = select(ctrl->s + 1, &rf...

各位大虾,小弟在调试8688的wifi过程当中发现,连接ap时发送psk密码的命令会延时很长时间。然后一路跟踪,发现在wpa_supplicant的代码中有这么一段:

if (send(ctrl->s, _cmd, _cmd_len, 0) s, &rfds);
res = select(ctrl->s + 1, &rfds, NULL, NULL, &tv);//阻塞发生在这里 if (FD_ISSET(ctrl->s, &rfds)) {
    res = recv(ctrl->s, reply, *reply_len, 0);

我想请问大侠们,这个阻塞的原因是什么呀?如何继续跟踪问题呢?谢谢!!

|
select模型是异步的,理论上不会出现这种问题。

|
这里select应该没有问题得啊 关键socket 的另一方相应的时间,你用其他设备测试过没有呢? 

|
这里的select是判断是否有数据可读,没有数据时会阻塞
至于为什么没有数据,就不知道了

|
人家不理你,你收不到数据呗,

|
那你查一下,为什么没有给你的socket发送数据啊!

|
1. 别人不理你
2. 是不是Android这个宏起作用了,把时间搞的短点
   #ifdef ANDROID
     tv.tv_sec = 10;
   #else
     tv.tv_sec = 2;

|
res = select(ctrl->s + 1, &rfds, NULL, NULL, &tv);
你这里使用了tv,指示当没有文件描述符可用时要等待tv指定的时间,即
tv.tv_sec, 你可以 tv.tv_sec = 0;  
这样不管文件描述符是否有变化,都立刻返回

|
按照你的代码,android 下面, select 如果没有读文件就需,就需要等待 10s

    
 
 

您可能感兴趣的文章:

  • linux 如何用SOCKET设置函数设置阻塞和非阻塞?
  • 非阻塞SOCKET,竟然也会阻塞?
  • 初级问题,socket(AF_INET, SOCK_STREAM, 0)是阻塞式还是非阻塞式?
  • 关于socket编程中阻塞的问题
  • linux C socke编程 创建的socket默认是阻塞的还是非阻塞的?
  • linux socket fd 写阻塞问题
  • socket编程,关于connect阻塞问题
  • 非阻塞socket该如何使用。。。
  • 当进程处于socket读阻塞模式中,外部SIGNAL发生,此时信号相应响应函数可否进行socket写?
  • select和非阻塞socket的迷惑
  • linux下socket的send函数阻塞问题?
  • solaris socket 非阻塞recv产生 EBADF 错误
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • 非阻塞的socket的问题
  • socket编程,设为非阻塞,客户端怎么判断connect已经成功呢?
  • 昨天发现fcntl设置非阻塞SOCKET会频繁的失败,不知道什么原因.
  • socket 非阻塞 出错
  • 一个socket阻塞问题 ,请多多指教!!!(只剩下100分了)
  • 急问:怎么判断一个非阻塞的socket已经断开了?
  • linux下如何设置一个socket为非阻塞方式?
  • linux socket问题。。怎样获得已帮定特定port的一个套接字socket
  • 数据库 iis7站长之家
  • socket编程 中的bind问题
  • 你是否可以回答Socket的问题?数据先后问题
  • 多进程socket编程问题
  • Socket的问题
  • socket accept问题,大家指教。
  • socket客户端程序的问题
  • 关于多网口socket通信的简单问题
  • fgets用在SOCKET流上的问题
  • linux下用socket实现多进程间通信问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3