问题标签 [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.
c# - C#中的UDP套接字?
如果socket.ReceiveFrom (byte [] message, EndPoint endPoint)
用于在绑定的 UDP 套接字上接收数据,但没有接收到数据,会发生什么?它是继续等待数据到达还是继续?我专门谈论 UDP 数据报。
java - 多播服务器和客户端通过发送对象确认
我正在实现一个多播服务器,它将其 IP 发送到多播组,并且组中的客户端在收到服务器的 IP 后,向它发送一个对象。这是定期进行的。
因此,第一个连接是一对多,第二个是一对一。我已经实现了各个部分,即多播,正确地通过套接字发送对象,但是当我整体运行它时遇到错误。
下面是代码: MulticastServer:
组播服务器线程:
报价服务器线程:
在客户端:MulticastClient:
我在线程“main”java.net.ConnectException 中遇到异常:客户端的 java.net.PlainSocketImpl.socketConnect(Native Method) 连接被拒绝,它指向客户端的套接字创建。
有人可以帮帮我吗?谢谢!
java - 基于 DatagramPacket 的应用程序中的 ArrayIndexOutOfBoundsException
一开始,我需要为我在程序中使用的变量/函数的波兰名称道歉。
所以,有一点字典:
问题就在此时,当客户端从服务器接收数据时 - 有 ArrayIndexOutOfBoundsException。
整个服务器的代码:
..和客户的代码:
java - 如何确保我要使用的端口始终可用(即未使用)?
有没有办法强制释放端口?端口通过 args[] 传递。我正在尝试构建一个等待来自多个设备的 UDP 数据包的服务器应用程序,所以我不想确保它总是会监听适当的端口。来自数据包的数据将被处理并将结果写入数据库。我正在使用 while(true) 循环来保持它监听新数据包。当多个设备(比如 2000 年)同时发送时,我可能会遇到并发问题吗?除了使用 while(true) 还有其他方法吗?有什么建议么?
编辑(主题可能不正确)我正在使用这些方法来转换 2 字节和 4 字节长度的有符号二进制补码。我找不到更简单的方法...
java - 关于如何在套接字上等待未知长度的数据包并尽可能有效地对其有效负载字节进行一些处理的任何建议?
我需要编写一个 UDP 服务器,它将等待来自不相关设备(最多 10000 个)定期发送小数据包的数据包;对有效负载进行一些处理并将结果写入 SQL。现在我通过 jdbc 完成了 SQL 部分,但是有效负载字节一直困扰着我,我应该如何访问它们?到目前为止,我一直在处理映射到字符串的有效负载,然后将字符串转换为十六进制(两个十六进制字符代表一个字节)。我知道有更好的方法可以做到这一点,但我不知道......
java - UDP 广播 - 请求 Java 服务器 IP 地址的 Android 应用程序
我正在尝试让一个 android 应用程序 ping 我的服务器,并让服务器返回其 IP 地址。
到目前为止,我已经让它与服务器通信,并让服务器发回一个数据包,但是,我需要发回服务器 IP 地址。
UDPService.java(服务器)
Discoverer.java(电话应用程序)
search.java(手机应用)
在此之后有相当多的代码,但这只是一个 if 语句,基于如果 IPAddress 为空会发生什么
java - 如何通过 Internet 发送数据报包?
我正在尝试用 Java 制作一个基本的数据报客户端/服务器程序。
我已使服务器紧贴本地计算机上的端口 9321。
我已经在本地计算机的端口 9320 上创建了客户端,然后通过无线路由器网络(192.168.1.100)在端口 9321 发送数据,程序正常工作!
然后我尝试通过(通过路由器)互联网 IP 139.195.12.183(我的 IP)在端口 9321 发送数据包,但它没有用!有这个例外:
我已将路由器设置为将对端口 9321 的任何请求转发到我的计算机,然后我在该端口上为我的计算机上的防火墙设置了例外
这是来源
我从另一个论坛得到了另一个答案,它说:
“路由器的工作方式是,您无法从内部网络 (LAN) 中看到您的外部 (WAN) 互联网地址。如果这就是您想要做的,那就没有错,它只是行不通。
伊恩。”
有什么解释吗?
java - Java DatagramSocket设置keep-alive选项
我正在尝试创建一个 datagramsocket 和 datagrampacket 以使用 keep-alive 选项发送。我对如何设置它感到困惑。有没有一种简单的方法可以做到这一点datagramsocket.setKeepAlive(true);
?
编辑:对不起,我的意思是设置一个数据包的生存时间。有没有办法可以设置它,如果没有收到,它会一直保留到收到?
nio - 不确定为什么我的服务器在帧解码器中收到“channelInterestChanged”事件
根据我们的协议,我实现了自己的帧解码器来解析通过 UDP 套接字(使用 NioDatagramChannelFactory 和 ConnectionlessBootstrap)接收到的字节。为了在接收消息时跟踪服务器中发生的情况,我在解码器的每个回调方法中添加了跟踪日志。
似乎对于服务器接收到的几乎每条消息,我们都可以看到在方法 channelInterestChanged() 中收到了两次事件“channelInterestChanged”。事件的值首先是 0 (OP_NONE),然后是 1 (OP_READ)。
我阅读了有关此的文档,但我仍然不确定为什么我会收到此类事件。我第一次通过它是因为接收缓冲区(或选择器队列)已满,但服务器接收此事件的次数与它接收“messageReceived”事件的次数相同(在调用 decode() 方法之前)和所有消息/frames 按预期正确解码。当消息丢失时,我根本看不到任何事件。在这种情况下,可能是因为数据报套接字的接收缓冲区已满。但即使我增加了这个接收缓冲区,我仍然会看到这些事件并错过消息。
所以,我想知道为什么对于收到的每条消息,服务器还会收到两个“channelInterestChanged”,一个带有 OP_NONE 值,一个带有 OP_READ 值。请注意,在通道管道中,在我的帧解码器之后,有一个 ExecutionHandler 和另一个特定于业务的处理程序(它将 JMS 消息发送到 ActiveMQ 实例)。
对我有什么想法或解释吗?
谢谢你。
c - C UDP网络,从数据报消息中提取数字
我正在开发一个网络软件作为大学考试的一部分。软件快完成了,但实际上我正在完成并发部分(使用 fork())。我的需要是在客户端和服务器之间交换这两条消息作为握手。这里是一个例子:PING:3506:DOWNLOAD PONG:5605
这是我处理这些消息的方法:在客户端,即发送 PING:3506:DOWNLOAD 的主机,我写道
在服务器端,即发送 PONG:5605 的主机,我写了
如您所见,PONG 部分丢失了,因为我想专注于第一个非工作部分。服务器正确接收(正如我从 Wireshark 看到的)消息 PING:3506:DOWNLOAD,但他告诉我他收到的是 19476 而不是 3506,这不是真的。我还注意到,如果我尝试发送数字消息而不将它们转换为网络字节顺序,情况会变得更糟。很多天我都在与这个作斗争,我不知道该怎么想了。