草庐IT

jobtitle_select

全部标签

C套接字编程: select() is returning 0 despite messages sent from server

我正在使用select()从服务器接收recv()消息,使用TCP/IP。当我send()来自服务器的消息时,它返回合理数量的字节,表示发送成功。当我使用while循环到recv()时,它确实成功到达了客户端。一切都很好,花花公子。while(1)recv()//obviouslypseudocode但是,当我尝试使用select()时,select()从超时(设置为1秒)返回0并且在我的一生中无法弄清楚为什么它看不到从服务器发送的消息。我还应该提到,当服务器断开连接时,select()也看不到,就像我要使用recv()一样,它会返回0到表示使用套接字的连接已经关闭。非常感谢任何意见或

c - 为什么select()有时连续返回0

我在armlinux平台上有一个关于select()的问题,一方面是armlinux作为tcp客户端,另一方面是pc作为tcp服务器。tcp客户端连接到服务器并以固定的间隔时间从服务器接收数据,例如5ms。大部分时候select是正常的,但是有时候会出现奇怪的情况,函数select()连续返回零(超时),之后select正常返回,但是读取数据大小异常,如下图。有人知道这是什么原因吗?非常感谢。while(scan->is_child_thread_active){FD_ZERO(&read_fd);w_time.tv_sec=0;w_time.tv_usec=(100*1000);//

C - 如何在使用 select() 时限制服务器中的入站连接数

我对C套接字编程还是个新手,但我能够创建一些简单的客户端和服务器程序。我正在编写一个监听TCP连接的服务器,它的职责是响应客户端的请求,然后在客户端发送特殊的字节序列(当然是断开连接)时关闭通信。我开始在无限循环中使用accept()函数对服务器进行编码:服务器等待客户端,accept()的它,做所有的事情,close()的最后的套接字描述符并再次返回等待接受新客户端。因为我想一次为一个客户端服务,所以我以这种方式调用了监听函数:listen(mysocket,1);一切都很好,但随后出现了新问题。上面解释的服务器部分在一个单独的线程中运行(我们称之为线程#2),主线程(线程#1)必须

php - 使用 select() 的简单 TCP 服务器,为什么 "longest request"这么高?

我正在使用select()方法实现一个简单的TCP服务器-一切都很好并且性能是完全可以接受的,但是当使用ab(apachebench)进行基准测试时,“最长请求”与平均时间相比高得离谱:我正在使用:ab-n5000-c20http://localhost:8000/片段:Requestspersecond:4262.49[#/sec](mean)Timeperrequest:4.692[ms](mean)Timeperrequest:0.235[ms](mean,acrossallconcurrentrequests)Percentageoftherequestsservedwithi

Python;无法通过 select 控制死套接字

我有一些代码可以连接到主机,除了监听传入数据外什么都不做,直到客户端关闭或主机发送关闭语句。为此,我的代码运行良好。然而,当主机在没有发送关闭语句的情况下死机时,我的客户端会按预期一直监听传入的数据。为了解决这个问题,我每隔foo秒使套接字超时并开始检查连接是否存在的过程。来自Pythonsocket我如何找到这个:Oneverynastyproblemwithselect:ifsomewhereinthoseinputlistsofsocketsisonewhichhasdiedanastydeath,theselectwillfail.Youthenneedtoloopthroug

c - 如果我使用 select() 轮询方法,我应该将套接字设置为非阻塞吗?

我正在使用select()轮询函数来确定何时有数据要从套接字读取。我这样做是为了不必依赖像accept()和recv()这样的阻塞函数。由于select()阻塞直到文件句柄有数据,是否有必要使用fcntl()将套接字设置为非阻塞?在我看来没有必要,因为select()函数告诉我数据已准备好从套接字文件句柄中读取。我见过程序员使用select()并将套接字设置为非阻塞的代码,我也见过程序员使用select并保留阻塞设置的代码。哪个是对的?使用select()并将套接字设置为非阻塞有优势吗? 最佳答案 是的,您通常应该将套接字设置为非阻

connect()、accept() 和 select() 发生顺序

我是C新手,刚注意到客户端的connect()函数只要TCP三向hand-抖完了。我的意思是connect()甚至可以在调用服务器端的accept()之前返回(如果我错了请纠正我)。基于这些知识,我的问题是,当我之后在客户端调用select()并观察文件描述符以等待它可写时,select()成功返回,也就是说服务器端已经调用了accept(),现在我可以安全地向服务器端写入了,对吧?非常感谢您的宝贵时间。intflags=fcntl(fd,F_GETFL);flags|=O_NONBLOCK;fcntl(fd,F_SETFL,flags);if(connect(fd,(structso

java - Selector.select() 开始无限循环

我有一个最小的JMS提供程序,它通过UDP发送主题消息并通过TCP发送队列消息。我使用单个选择器来处理UDP和TCP选择键(同时注册SocketChannels和DatagramChannels)。我的问题是:如果我只发送和接收UDP数据包,一切顺利,但是一旦我开始在TCP套接字上写入(使用Selector.wakeup()让选择器进行实际写入),选择器进入无限循环,返回一个空的选择键集,占用100%CPU。主循环的代码(有些简化)是:publicvoidrun(){while(!isInterrupted()){try{selector.select();}catch(finalIO

sockets - 同时使用 accept() 和 select() ?

我有一个事件驱动的网络服务器程序。该程序接受来自其他主机上其他进程的连接。同一远程IP上的不同端口可能有许多短暂的连接。目前,我有一个while(1)调用accept()的循环然后生成一个线程来处理新连接。读取消息后关闭每个连接。在远程端,发送消息后关闭连接。我想通过缓存打开的套接字FD来消除建立和拆除连接的开销。在发件人方面,这很简单-我只是不关闭连接,并保持它们在身边。在接收端,有点难。我知道我可以存储accept()返回的FD在结构中并使用poll()监听所有此类套接字中的消息或select(),但我想同时通过accept()监听新连接和监听所有缓存的连接。如果我使用两个线程,一

ios - Xcode 6 : storyboard size not changing when selecting w:Regular h:Regular from w:compact h:regular

我正在使用Swift开发一个项目,当时我正在使用Storyboard为iPad和iPhone创建UI,因此我同时需要更改Storyboard的大小(我使用的是大小类)。在我为iPhone和iPad的View设计UI之后。我正在将一些socket连接到两者。当我将尺寸从w:compacth:regular更改为w:Regularh:Regular时,我完成了iPhonesocket的连接,它没有改变,两个View发生了变化,但我连接socket的View没有改变。我正在使用Xcode-6beta-3。我想我无法粘贴Xcode的任何图像,因为它处于Beta模式。