问题标签 [sendto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2772 浏览

c++ - Faster WinSock sendto()

I'm using Windows Server 2008, and my program is in C++. I'm using WinSock2 and sendto() in a while(true) loop to send my packets.

Code like so:

I need to send as much data to as many IPs in my hosts std::vector as possible, as quickly as possible.

I'm currently running on an i7 930 server, and I can only achieve 350Mbps or so.

I currently split my program into 4 threads, all running the while loop with different servers assigned to each thread. Adding more threads or running more copies of the program results in lower throughput.

I have another program running listening for replies from the servers. I get the servers from a master list and add them to my array. The problem at the moment is that it takes too long to go through all of them, and I want to check them regularly.

How exactly can I optimize my program/loop/sending here?

0 投票
1 回答
4995 浏览

linux - TCP Socket 挂起 - 双方都卡在 sendto()

我们有一个似乎挂起的 linux 应用程序(我们没有源代码)。两个进程之间的套接字报告为 ESTABLISHED,并且内核套接字缓冲区中有一些数据(尽管远不及通过 wmem/rmem 配置的 16M)。套接字的两端似乎都卡在了 sendto() 上。

下面是使用 netstat/lsof 和 strace 进行的一些调查:

主机 A (10.152.20.28)

主机 B (10.152.20.29)

我们已将 NIC 驱动程序升级到最新最好的版本。系统运行 RHEL 5.6 x64 (2.6.18-238.el5),我检查了 RHEL 5.7 和 5.8 的 eratta,但我看不到 bnx2 驱动程序或内核的错误。

有人对如何进一步调试有任何想法吗?

0 投票
1 回答
3979 浏览

c++ - 发送UDP数据包时出现“无效参数”,但是哪个?

我的 C++ 应用程序将二进制数据作为 UDP 数据包发送。sendto() 调用返回 EINVAL(无效参数),但我没有看到我传递的参数有任何问题。

我对应用程序进行了 strace,以下是相关的系统调用:

有人看到哪个参数无效吗?

该应用程序最近被移植以支持 IPv6,但我不知道这是否与它有关。

0 投票
1 回答
1303 浏览

linux - TCP 消息被合并

我有一个正在写入网络的 Java 应用程序。它正在 764b +/- 5b 的区域内写入消息。pcap 显示流正在被 IP 分段,我们无法解释这一点。

Linux 2.6.18-238.1.1.el5

一个 strace 显示:

( strace -vvvv -f -tt -o strace.out -e trace=network -p $PID )

我在捕获网络时看到大于 MTU 的数据包,这导致了碎片。

问题:

1) 似乎服务器试图将两个 sendto() 批处理到一个 IP 数据包中,该数据包大于 MTU,因此变得碎片化。为什么?

2) 查看 PID 2046 的 strace 输出,等号 <... sendto resumed> 行之后的数字是发送的总数吗?即第 3 行和第 5 行总共发送了 764b?还是每行发送 764 个字节?

3) 是否有任何选项可以传递给 strace 以记录所有sendto() 输出?好像什么都找不到。。

0 投票
3 回答
3109 浏览

javascript - 如何实现“发送到 kindle”链接?

我正在尝试找出如何创建一个链接,将我网站上的当前页面/文章发送到用户的 Kindle 设备。我找不到太多关于它的信息,但我知道它可以完成,因为我在这里看到它:http: //openlibrary.org/works/OL258709W/King_Henry_VI和 Instapaper 提供此功能,请参见图片。有谁知道如何做到这一点,甚至从哪里开始?

发送到kindle

我看过其他帖子问过这个问题,但它们是很久以前的,当时不可能,所以没有答案,现在有可能。

0 投票
1 回答
863 浏览

c - 如何生成恒定的 UDP 流量?

我需要在 C 中编写一个 UDP 客户端,它生成的流量将在 Ton 时间内具有 Ron 的发送速率,并在 Toff 时间内停止发送任何内容并再次重复。因此,交叉流量是周期性的。我遇到的问题是如何让客户端以恒定速率发送 Ron。我考虑过使用函数 sendto 和 usleep。但是,sendto 无法指定您希望以什么速率发送数据。

提前致谢。

0 投票
1 回答
5062 浏览

sockets - 使用 sendto 发送时如何强制 UDP 中的客户端打开端口

我在 UDP (WinSocks/C++) 中有简单的服务器和客户端。

我通过 sendto 发送数据报客户端 - > 服务器,并使用从 recvfrom 函数获得的 ip 和端口从服务器回复客户端。

我发现:

  1. 来自客户端的每个 sendto 都从不同的端口发送
  2. 当尝试从服务器回复时,Windows 会返回 WSAECONNRESET(这意味着该端口已关闭 - http://support.microsoft.com/kb/263823

如何从服务器正确回答客户端(即使用 sendto 发送时强制客户端绑定端口?)

编辑:添加一些源代码:

0 投票
1 回答
1202 浏览

c++ - recvcfrom() 和 sendto() 要使用的 IP 地址

实际上,我想在 C 中创建一个应用程序,以便两个人可以互相聊天。让我们假设他们知道他们的 IP(实际上,我认为我在这里犯了错误。我的 IP 来自 www.whatismyip.com)。

以上是接收对方发送的内容的功能。当“127.0.0.1”的值时效果很好,from但是当使用我的 ip (117.193.52.176) 时,会出现其他内容。谁能告诉我我错在哪里?

0 投票
2 回答
16465 浏览

c - 套接字 - C 中的权限被拒绝

我正在尝试从 C 中的 DNS 服务器获取 MX 记录。我的问题是,每次我调用 sendto 或 recvfrom 时都会收到 Permission denied 错误。(IDE - Xcode 4,Mac OS X Lion)到目前为止还没有在 C 语言中做过任何事情,但我需要这个来完成作业。来自http://www.binarytides.com/blog/dns-query-code-in-c-with-linux-sockets/的“灵感” 到目前为止我的代码:

0 投票
0 回答
1002 浏览

performance - udp 套接字如何在内部实际工作?

我试图将数据包操作减少到最低限度,以提高我正在处理的特定程序的效率,但我正在努力解决使用 sendto/recvfrom 通过 udp 套接字发送所需的时间。我正在使用 2 个非常基本的进程(应用程序),一个是发送,另一个是接收。

我愿意了解使用这些函数调用时 linux 内部是如何工作的......

以下是我的观察:在发送数据包时:

  • 10Kbps,消息从一个应用程序传送到另一个应用程序所需的时间约为 28us
  • 400Kbps,消息从一个应用程序到另一个应用程序所需的时间约为 25us
  • 4Mbps,消息从一个应用程序到另一个应用程序所需的时间约为 20us
  • 40Mbps,消息从一个应用程序到另一个应用程序所需的时间约为 18us

当使用不同的 CPU 时,时间明显不同,并且与这些观察结果一致。必须有某种设置可以根据套接字上的流量更快地完成某些队列读取......如何控制?

仅将节点用作转发节点时,使用 400Kbps 流时进出大约需要 8us,我想尽可能收敛到这个值。25us 是不可接受的并且被认为很慢(很明显,这比每个数据包之间的延迟要小得多……但关键是最终能够处理更多的数据包,因此,这次需要缩短!)。有什么比 sendto/recvfrom 更快的吗(必须使用 2 个不同的应用程序(进程),我知道我不能使用单块,因此我需要在套接字上发送信息)?