【发布时间】:2014-03-10 13:46:49
【问题描述】:
我正在尝试在while() 循环中连续发送 10,000 个 XML 请求,从 Client 到 Gateway(充当服务器此客户端)通过 UDP 传输。网关实现select() 函数调用来监控read_fds。在 Gateway 中,我传递给 select() 的 struct timeval 值是:
tv.tv_sec = 5;
tv.tv_usec = 0;
每个 XML 请求都是 1500 字节,客户端和网关都是 用 C++ 编码,二进制文件在 Linux (RHEL 5) 上运行
有两种情况:
案例 1:
在客户端,如果我在 while() 循环中连续发送 10,000 个 XML 请求,并在每个请求之间使用 usleep() 实现 500 微秒的延迟,则网关接受所有10,000 个请求,对其进行解析并将请求记录到 .log 文件中。
案例 2:
在客户端,如果我在while() 循环中连续发送 10,000 个 XML 请求而没有任何延迟,则网关只接受 2,600 个请求,对其进行解析并将请求记录到.log 文件。
问题: 我怎样才能增加编号。网关接受的请求数,但未在客户端实施延迟?另请告诉我,案例 2 中来自客户的剩余 7,400 个请求会发生什么情况,它们是否丢失了?
【问题讨论】:
-
尝试
epoll与边缘触发选项。
标签: c++ linux select udp udpclient