问题标签 [datagram]

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 回答
19688 浏览

java - 一些java数据报套接字问题

我最近深入研究了使用 java 进行套接字编程,我有一些一般性的问题。

有一个 bind() 方法,以及一个 connect() 和 disconnect()。没有 unbind()。这是因为断开连接时套接字未绑定吗?一旦程序退出,垃圾收集会处理这个问题吗?或者这甚至不是一个有效的问题?

另外,在创建 DatagramSocket 时,如果我只提供端口和地址有什么不同?我正在创建一个程序来从网络上收集数据,因为数据会四处流动并记录下来。我应该只使用本地地址吗?创建套接字时无法使用地址导致我无法收集数据包?

我只是想对这些事情的内部运作有更深入的了解。

0 投票
2 回答
7075 浏览

qt4 - 使用 QUdpSocket 发送数据报

我正在尝试使用 QUdpSocket 发送数据报。以下是我正在使用的代码:

现在,如果我在只有一个网络适配器的计算机上运行它,它似乎可以正常工作。但是,如果有多个适配器,我需要能够控制哪个用于发送数据报。我发现如果我按如下方式绑定套接字:

然后我可以强制在与该 IP 关联的本地网络上发送数据报(否则它似乎随机选择一个)。然而,'bind' 函数设置套接字来监听数据包,我现在对此并不感兴趣。这是控制使用哪个适配器的正确方法,还是有更直接的方法来做到这一点?

谢谢

0 投票
1 回答
5260 浏览

c++ - 数据报(UDP)winsocket通过环回适配器在同一个套接字上发送和接收的C++问题

我正在尝试使用 udp 套接字发送一些数据,并通过 Windows 环回 adatper 在同一个套接字上接收它们。在我的网络属性中,我将环回适配器设置为具有以下 ip 192.168.1.1

recvfrom 函数返回 -1 指示错误。我还使用wireshark监控环回适配器上的流量,似乎没有任何东西发送到环回适配器,我看不到流量。

在 Windows 上我们不能使用环回地址(127.0.0.1)是真的吗?我在一些论坛上看到了,这就是我尝试使用环回适配器的原因。我也尝试直接发送到我自己的 ip,但它没有给出更好的结果。顺便说一句,可以发送到他自己的 ip 并取回数据吗?

我将不胜感激,以防万一,我是套接字编程的新手。

下面是我的代码:

0 投票
4 回答
22956 浏览

java - 通过 Java DatagramSocket 向 255.255.255.255 发送数据包失败

我正在用 java 编写一个网络程序,我想将一些数据包发送到 255.255.255.255,但它失败了,即使我将它们发送到 192.168.1.255,根据 ifconfig 命令的输出,它是广播地址。但是当我将它们发送到我伴侣的 IP 时,它工作正常。

这是我的程序的代码:

我已经使用 DatagarmSocket 和 DatagramPacket 来做到这一点,这是我的网络实现:

没有抛出异常。
我在一个自组织网络中。
我使用的是 MAC OS X 10.6,而我的伙伴使用的是 kubuntu 11.04。这是 ifconfig 输出:

en0 是我用来连接到我的伙伴的设备。

请简单点,我是新手:)

提前致谢。

0 投票
1 回答
1737 浏览

java - 数据报通道套接字不写 Java

简单地说,我能够从连接的套接字接收数据,直到它启动后大约 10 秒。解决此问题的解决方案是将数据发送到“客户端”(ARDrone)以保持数据流继续运行,否则它将停止向手机发送数据。但是,由于某种原因,我当前的代码仅在第一次连接时将数据写入客户端(ARDrone),之后再也不写入。即使在套接字通信之后,我也需要它继续向 ARDRone 发送数据。

我已经尝试过移动channel.register()呼叫,但我所做的任何事情似乎都没有根据需要将数据发送到 ARDrone。

创建连接:

这是当前发送/接收数据的功能。

0 投票
1 回答
1032 浏览

.net - udp Socket 稳定发送,突发接收

我设置了一个非常简单的 UdpClient 来尽可能快地接收 8 个字节的数据。客户端发送数据的速度非常快,但服务器以大约 0.5 秒的非常不稳定的间隔接收数据。它在接收时停止,然后突然以非常快的速度连续接收大约十个数据报,然后再次停止约 0.5 秒,依此类推。这里可能是什么问题?我试过关闭防火墙,但它没有帮助......

客户:

此代码不断发送累积缓冲区:

服务器:

我现在知道它非常原始的代码,但它至少没有抛出任何异常......

我已经检查过 Wireshark,但我不确定要寻找什么。UDP 消息可以正常发送,没有打嗝。

我已经阅读了限制 UDP 而不是尽可能快地发送的好主意。我确实尝试过,没有任何明显的区别。发送速度较慢,但​​接收与以前一样大块/突发。

客户端和接收器都在同一台开发机器上(Windows 7)。


这是测量接收呼叫之间的时间的一些输出。如您所见,它大约每 30 次迭代就会卡住一秒钟:

ETC

更新

看起来延迟是在缓冲区发送后出现的。发送代码似乎非常快速/流畅地发送缓冲区,但是当它们出现在 Wireshark 中时,它们大约每秒钟的 udp 触发都有 1 秒的延迟。接收代码似乎没有造成这种延迟,它已经在那里了。我不明白。

0 投票
2 回答
2383 浏览

java - 通过UDP发送图片

我想用java编写一个应用程序,让两个客户通过网络摄像头交谈。它的工作方式是两个客户端都连接到一个网络摄像头,该摄像头以指定的帧速率(可能每秒 20 个)拍照,然后减小大小和分辨率,然后通过 UDP 数据包将其发送到另一个客户端。我的问题是——我应该在自己的数据报包中发送每张图片吗?我读过它们最多只能容纳半千字节,所以每张照片都应该减少那么多吗?或者我应该把它分成几个数据包?

0 投票
3 回答
11124 浏览

c - 如何使用 SOCK_DGRAM 制作双向 unix 域套接字?

我正在尝试编写一个简单的 Unix 数据报服务器/客户端,但遇到了一些问题。我想要的是一个服务器,它在数据报套接字上侦听并向原始发送者发送对收到的每条消息的回复。我决定首先尝试socat用作“服务器”并用 C 编写客户端。我正在运行 socat,如下所示:

据我了解,这应该收听/tmp/test.socket并回复使用相同字符串收到的所有内容?然后我有一个看起来像这样的客户端程序(为清楚起见,删除了错误检查):

它应该发送数据包(有效),接收数据包,然后将其打印出来,但程序似乎无法接收数据包。我在这里做错了什么,还是我对 Unix 套接字有根本的误解?谢谢!

0 投票
1 回答
442 浏览

java - DatagramChannel 绑定到通配符地址的 NoRouteToHostException

我在使用这种组合时遇到了问题:我想将我的发送和接收数据报通道绑定到系统选择的端口和 IP(不是环回也不是localhost)。在下面的示例中,当我使用“旧 I/O”aka DatagramSocket(案例 1)时一切正常,但NoRouteToHostException使用 NIO aka DatagramChannel(案例 3)失败。

我的 API 全部基于,InterruptibleChannel并且通过创建的套接字new DatagramSocket没有关联的通道,因此我需要使用DatagramChannel.open(). 一个愚蠢的解决方法是案例 2,我暂时“连接”频道。因此,这可能有助于回答案例 3 失败的原因……

0 投票
2 回答
3189 浏览

java - UDP 接收和发送 UDP 包的问题?

我正在尝试编写一个关于 UDP Connections 的简单程序来了解它们。我已经实现了一些基本的东西,但是当我尝试发送并取回我发送的内容时,我遇到了一些问题,例如,

当我这样做时;发送一个字符串

“asd”到服务器我得到了 asdxxxxxxxxxxxx,当我尝试打印我在服务器中得到的内容时,我得到 [B@5f186fab

我怎么解决这个问题 ?

为了更清楚,我向您发送了几行代码,

在客户端;

在服务器中;

谢谢你们

编辑 1 我认为我的缓冲区有问题,但我不知道如何解决。