标签: polling

我的简单poll()示例仅部分有效

我已经包含了以下代码.该程序应该接受端口8888上的telnet连接,然后使用poll和send和recv从每个telnet客户端发送和消息,但它不是100%工作.似乎某些连接总是可以向任何人发送消息,并且程序运行正常,但总有至少一个客户端无法发送消息.所有客户都可以随时收到.(民意调查不会注册传入的数据)

这段代码自己运行,所以如果你把它放在一个文件中并用gcc -o app filename.c编译它,那么你可以通过端口8888 telnet到localhost并看到它无效.:-(这段代码是为Fedora编写的,但不应该有任何非特定于Linux的内容.任何帮助都会非常感激.

#include <stdio.h>
#include <stdlib.h>
#include <poll.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>
#include <string.h>
#include <signal.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>

#define PORT 8888
#define MAX_CONN 10
#define SECOND 1000
#define TIMEOUT (30 * SECOND)

static int listen_socket();

int main(int argc, char **argv)
{
    struct pollfd **my_fds;                  //array of pollfd structures for poll()
    struct pollfd *curr, *new_conn;          //so I can loop through
    int num_fds;                             //count of how many are being used …
Run Code Online (Sandbox Code Playgroud)

c sockets networking polling

6
推荐指数
1
解决办法
3万
查看次数

select()调用剩余时间

我正在select()Linux/ARM平台上使用,看看udp套接字是否收到了数据包.如果它在超时之前返回(检测到数据包),我想知道select select中剩余多少时间.

有点像:

int wait_fd(int fd, int msec)
{
    struct timeval tv;
    fd_set rws;

    tv.tv_sec = msec / 1000ul;
    tv.tv_usec = (msec % 1000ul) * 1000ul;

    FD_ZERO( & rws);
    FD_SET(fd, & rws);

    (void)select(fd + 1, & rws, NULL, NULL, & tv);

    if (FD_ISSET(fd, &rws)) { /* There is data */
        msec = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
        return(msec?msec:1);
    } else { /* There is no data */
        return(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

c linux select polling

6
推荐指数
1
解决办法
2444
查看次数

Hudson无限循环轮询Git存储库中的更改?

哈德森的git插件效果很好.但是,构建脚本必须更新存储库中的文件中的版本号,提交并推回到存储库.

当Hudson轮询旁边检查更改时,它进入无限循环,因为它看到提交为"更改"再次构建,提交更改,因此它再次构建,然后它提交另一个更改,等等...这个想法.

我停止了它,在每个存储库中运行了一个"git log",并使用git ls-tree HEAD比较了最新的提交ID是完全相同的

此外,Hudson运行此命令以检查更改:

git fetch + refs/heads/:refs/remotes/origin / git ls-tree HEAD

由于Hudson本身从其工作空间存储库推送提交,并且显然ls-tree结果匹配,该命令如何确定存在更改?

它似乎必须在构建之前存储ls-tree的结果,并与不具有最新提交的结果进行比较.啊.我可以尝试关闭提交来测试该理论.

无论如何,而不是修复Hudson的git插件中的任何问题,我可以做些什么来确保在我的构建结束时,repos是相同的,而Hudson会看到它.

如何解决这个问题?有任何想法吗?

韦恩

git hudson infinite-loop polling

6
推荐指数
2
解决办法
3053
查看次数

使用HTTPS的Silverlight轮询双工

是否可以让Silverlight Polling Duplex WCF使用HTTPS?

silverlight https duplex polling

6
推荐指数
1
解决办法
1070
查看次数

如何轮询文件以进行更改?

问题

我希望下面的脚本最多打印一个事件然后停止(它的编写只是为了说明问题).

#!/usr/bin/env python

from select import poll, POLLIN

filename = "test.tmp"

# make sure file exists
open(filename, "a").close()

file = open(filename, "r+")

p = poll()
p.register(file.fileno(), POLLIN)

while True:
    events = p.poll(100)
    for e in events:
        print e
        # Read data, so that the event goes away?
        file.read()
Run Code Online (Sandbox Code Playgroud)

但是,它每秒打印约70000个事件.为什么?

背景

我写了一个内部使用pyudev.Monitor类的类.除此之外,它还使用poll对象轮询 fileno()方法提供的fileno以进行更改.

现在我正在尝试为我的班级编写单元测试(我意识到我应该首先编写单元测试,所以不需要指出它),因此我需要为自己编写自己的fileno()方法模拟pyudev.Monitor对象,我需要控制它,以便我可以触发poll对象来报告事件.正如上面的代码所示,我无法停止报告看似不存在的事件!

我可以在民意调查类中找不到acknowledge_event()或类似内容,以使事件消失(我怀疑只有一个事件在某种程度上被卡住),搜索谷歌并且这个网站什么都没有产生.我在Ubuntu 10.10上使用python 2.6.6.

python udev polling

6
推荐指数
1
解决办法
4580
查看次数

Android定期从服务器轮询

我想每隔x分钟从服务器中提取一些数据.如果信息包含某些信息,我想创建通知.我希望即使应用程序在后台或手机处于睡眠状态时也会发生此轮询.我在android中有一些关于轮询的问题.

  • 这样做的最佳方法是什么?我应该使用
    IntentService,AlarmManager还有其他什么?

  • 我应该多久轮询一次数据?我想保持相对频繁,比如每10分钟一次.

android polling

6
推荐指数
1
解决办法
9653
查看次数

基于事件或轮询的嵌入式MCU系统架构?

我之前有过编写基于事件和轮询的嵌入式系统的经验(对于没有抢先操作系统的小型MCU).

在基于事件的系统中,任务通常接收队列上的事件(消息)并依次处理它们.

在基于轮询的系统中,任务以特定间隔轮询状态并响应更改.

你更喜欢哪种架构?两者可以共存吗?

更新:点数

基于POLL
- 与时序方面相关的紧耦合(@Lundin)
*可以使用队列与事件系统共存(@ embedded.kyle)
*适用于较小的程序(@Lundin)

基于事件
+从长远来看更灵活的系统(@ embedded.kyle)
- RTOS版增加了复杂性(@Lundin)
*小程序=状态机控制(@Lundin)
*可以使用队列和"超级循环"实现(内部控制器/主要)(@ embedded.kyle)
*只有真正的"事件"是hw中断的(@Lundin)

相关问题
*寻找有限状态机的不同调度算法的比较(@ embedded.kyle)

相关信息
*"首选使用活动对象而不是裸线程"(@Miro)
http://www.drdobbs.com/parallel/prefer-using-active-objects-instead-of-n/225700095
*"正确使用线程=隔离+异步消息"(@Miro) http://www.drdobbs.com/parallel/use-threads-correctly-isolation-asynch/215900465

embedded event-handling polling

6
推荐指数
1
解决办法
3922
查看次数

Android:使用Retrofit轮询服务器

我正在Android上构建一个2人游戏.游戏以转向方式工作,因此玩家1等待玩家2输入,反之亦然.我有一个网络服务器,我使用Slim Framework 运行API .在客户端我使用Retrofit.因此,在客户端,我想每隔X秒轮询一次我的网络服务器(我知道这不是最好的方法)来检查是否有来自玩家2的输入,如果是更改UI(游戏板).

处理Retrofit我遇到了RxJava.我的问题是弄清楚我是否需​​要使用RxJava?如果是,是否有任何非常简单的例子用于改造轮询?(因为我只发送了几个键/值对)如果不是如何用改造来做呢?

我在这里找到了这个帖子,但它也没有帮助我,因为我仍然不知道我是否需要Retrofit + RxJava,是否有更简单的方法?

rest android polling rx-java retrofit

6
推荐指数
1
解决办法
5266
查看次数

socket.io不断尝试在错误的地址上使用轮询

嘿,我正在尝试使用socket.io与跨域.例如,假设域名是:https://client.domain.comhttps://server.domain.com.我的客户端代码如下所示:

socket = io.connect("https://server.domain.com");
socket.on("connect", function () {
    console.log("socketio Connected to server!");
});
socket.emit("test", {"test":"test"});
Run Code Online (Sandbox Code Playgroud)

和服务器端:

var fs = require('fs');
var https = require('https');
var express = require('express');
var socketIO = require('socket.io');
var app = express();

// Settings
var serverOptions = {
  key: fs.readFileSync('privkey1.pem'),
  cert: fs.readFileSync('cert1.pem')
};

var serverPort = 443;

// Logic
var server = https.createServer(serverOptions, app);
var io = socketIO(server);

io.on('connection', function(socket) {
  socket.on("test", function(data) {
    console.log(data);
  });
});

server.listen(serverPort, function() { …
Run Code Online (Sandbox Code Playgroud)

polling node.js socket.io

6
推荐指数
1
解决办法
997
查看次数

Longpolling与Websockets

我开始开发一个软件,使用html + js编码的应用程序我需要使用nginx for routiong从服务器(java代码)发送此应用程序通知,并托管在AWS中.我调查了这个实时通知的主题,我在网络套接字和长轮询之间感到困惑 在什么情况下,AJAX长/短轮询比HTML5 WebSockets更受欢迎?

在一些文章中,我读到长轮询是一个旧的不像websocket更新更好(在什么情况下AJAX长/短轮询优先于HTML5 WebSockets?)我开始检查gmail facebook whatsapp网页的元素.我看到使用长轮询的Gmail + facebook与使用Websocket的whatsapp不同.那么为什么这些公司仍然选择使用长期投票呢? https://www.quora.com/Does-Facebook-use-WebSockets-for-any-of-their-applications-Are-they-really-useful-at-that-scale-especially-since-they-impose-一个有状态的体系结构

javascript polling long-polling websocket

6
推荐指数
2
解决办法
1万
查看次数