问题标签 [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 投票
1 回答
1488 浏览

java - java socket问题,不会监听一个以上的数据报包

我正在创建一个服务器(现在称为 Server1),它正在与我拥有的另一台服务器(现在称为 Server2)进行通信。

  • Server1 向Server2 发送一个数据报包。
  • Server2 应该发回两个数据报包,但我只收到一个。
  • server2没有问题,发了两个包。

我使用 Wireshark 来嗅探离开和到达 Server1 的包。

套餐一(来自wireshark):“5955 11994.023974 192.168.1.3 192.168.1.2 UDP Source port: 50000 Destination port: 50004”

包二(来自wireshark):5958 11994.045830 192.168.1.3 192.168.1.2 ICMP Destination unreachable(端口不可达)

Server1 运行一个正在侦听数据报包的线程。

代码服务器1:

接收功能:

有人有线索吗?顺便说一句...我也使用:

我是否必须使用服务器套接字来使其侦听多个数据报包?

摘要: - 端口不可达 - 无法接收第二个包

希望可以有人帮帮我。提前致谢

0 投票
1 回答
560 浏览

java - 用于连接到 NNTP 服务器的 java Socket 或 DatagramSocket

嘿伙计们,我想写一个简单的 NNTP 客户端,它可以连接到服务器,发送 AUTHINFO 详细信息,并使用 GROUP 和 BODY 加入组并检索帖子。

我在这里与几个人进行了讨论,他们建议使用 dataGramSockets 和 datGramPackets。

谁能提供一个简单的脚本来解释每个命令的工作原理以及为什么在传统套接字上使用 DataGram 套接字?我使用了 Socket 并且能够连接到我的服务器,但我不知道如何使用 getInputStream() 和 getOutputStream() 向服务器发送/接收数据。

任何帮助都会很棒。

0 投票
2 回答
253 浏览

java - java中的数据报

java中是否有可能不使用本机函数发送数据报?

0 投票
1 回答
2416 浏览

java - DatagramSocket.receive() 问题

我正在使用DatagramSocketJava 中的类从用 C 编写的客户端接收 udp 数据包。这是接收的代码(服务器套接字已经设置):

然后它打印内容。我的调试消息(未在此代码中显示)表明它已成功到达receive()部件并正在等待(这是一个阻塞调用)。这是问题所在:

此服务器仅在第二次运行发送消息的客户端时接收数据包,而不是第一次。即使客户端在第一次运行时发送了多个数据包,服务器也不会显示任何内容,直到第二次运行整个客户端。假设问题出在服务器端而不是客户端是否安全?(客户端代码不是我写的......这很恶心,而且是用C语言编写的)。

0 投票
3 回答
8479 浏览

c - 接收到的 UDP 数据包长度

如何获取接收到的UDP数据包的长度?使用wireshark,我可以看到正确的数据报长度。如何在我的简单 udp 服务器程序中打印此值?我正在接收二进制数据(不可打印的 ascii 字符作为数据)所以我不能使用 strlen(buf) ,它会抛出不正确的长度。

上面代码中的 udp 数据包长度始终为“0”。任何意见?

我也试过像下面

上面的代码总是从 ip 标头返回错误的值?任何意见?

原始 C 文件包含在此处。

我收到的输出如下:

上述解密数据与我发送的数据相匹配。

0 投票
3 回答
904 浏览

udp - 如果客户端不监听 UDP 端口,数据报在哪里?

假设客户端通过我的应用程序向服务器发送了一些数据报。如果我在服务器端的应用程序停止工作并且无法接收任何数据报,但客户端仍然继续通过 UDP 协议向服务器发送更多数据报,那么这些数据报要去哪里?他们会留在服务器的操作系统数据缓冲区(或其他什么?)

我问这个问题是因为我想知道如果客户端通过 Internet 向 PC 发送 1000 个数据报(每个 1K),即使没有人在收听这些数据,这 1000 个数据报是否会通过 Internet(消耗带宽)?

如果答案是肯定的,我应该如何阻止这种情况发生?我的意思是如果服务器停止运行,我应该如何使用 UDP 来了解事实并停止任何进一步的发送?

谢谢

0 投票
2 回答
617 浏览

java - UDP 聊天问题

你好朋友,我创建了一个 UDP 聊天程序,客户端可以通过它通过 LAN 进行通信。

我创建了一个通用程序,即我用不同的端口号运行相同的代码。和局域网时的IP地址

我的问题是,下面的这段代码在本地主机上运行良好,但是当我尝试连接两台机器时,这段代码不起作用..没有错误,但两个客户端仍然无法通信

我也关闭了防火墙。但我无法找出为什么我不能在两台机器之间通信

代码如下::

0 投票
1 回答
3199 浏览

java - 关闭 Netty UDP 服务器

我使用 Netty 编写了一个非常简单的 UDP 服务器——它很高兴地绑定自己并接受消息,但我不知道如何解除绑定。

我是否遗漏了什么,或者 Netty 没有公开必要的 API 来取消绑定服务器?

编辑

这是我用来绑定服务器的代码:

0 投票
1 回答
4199 浏览

java - Android 2.0.1(目前在 DROID 上)的多播是否损坏或者我错过了什么?

此代码在 Ubuntu、Windows 和 Mac OS X 中完美运行。它也适用于运行 Android 2.1.1 的 Nexus One。

我开始发送和收听多播数据报,所有的计算机和 Nexus One 都可以完美地看到对方。然后我在 Droid (固件 2.0.1)上运行相同的代码,每个人都会收到 Droid 发送的数据包,但 droid 只会监听它自己的数据包

这是run()一个线程的方法,它不断地在多播组上侦听发送到该组的传入数据包。

我在路由器中启用了多播支持的本地网络上运行我的测试。我的目标是通过将数据包广播到多播组,使设备在上线时相互满足。

这是从每个可用的有效网络接口(不是环回接口)发送多播数据报的代码。

更新(2010 年 4 月 2 日) 我找到了一种让 Droid 的网络接口使用多播进行通信的方法:WifiManager.MulticastLock

然后当你完成...

完成此操作后,Droid 开始在多播组上发送和接收 UDP 数据报。

2010 年 7 月 6 日更新

根据请求,这是我当前的代码,下一个方法存在于一个抽象类中,可用于广播和多播接收器。

您的扩展类应该实现onInit()onDatagramReceived()

对于多播接收器,onInit() 看起来像这样:

0 投票
5 回答
6354 浏览

java - Java丢弃了一半的UDP数据包

我有一个简单的客户端/服务器设置。服务器是 C 语言,而查询服务器的客户端是 Java。

我的问题是,当我通过连接发送带宽密集型数据(例如视频帧)时,它会丢弃多达一半的数据包。我确保在服务器端正确地对 udp 数据包进行分段(udp 的最大有效负载长度为 2^16)。我验证了服务器正在发送数据包(printf sendto() 的结果)。但是java似乎并没有得到一半的数据。

此外,当我切换到 TCP 时,所有视频帧都通过了,但延迟开始增加,在运行几秒钟后增加了几秒钟的延迟。

有什么明显的我失踪了吗?我似乎无法弄清楚这一点。