[使用Java进行UNIX UDP数据传输

问题描述 投票:0回答:1

我想使用Java创建UDP OUTPUT = UPLOAD流。我将从打开的命名管道或连续文件中获取INPUT = SOURCE数据作为文件输入流。

我的问题是,我可以在互联网上找到的所有UDP示例,仅演示控制台会话。回声服务器等。

我正在尝试创建一种流式传输诸如音频/视频之类的连续内容的方法,并且我不在乎丢失了什么,我将其留给用户关注,但是我的代码确实需要允许设置缓冲区大小并创建UDP连接。

理想情况下,一个好的示例将显示如何进行上传和下载模式的连接(客户端模式和服务器模式)

您能否提供一些代码来执行此操作,或者在互联网上向我显示链接?我找不到UDP流客户端/服务器示例的事实是荒谬的。使用UDP进行控制台会话可测试一个人的理智极限! 甚至从不认为它是可选的,更不要说有用了。我需要的客户端/服务器代码必须与GNU netcat兼容。 (以确保正确的性能)

我已经尝试过与客户进行此操作:

byte[] buffer = new byte[udpPacketSize]; // 4096
int len;
while ((len = standardInput.read(buffer)) != -1) {
    udpSocket.send(new DatagramPacket(buffer, len, host, port));
}

但是当我停止发送数据并断开连接时,无法重新连接以发送更多数据。我不确定这是否应该发生,因为1)我完全不在这里了; 2)发送数据后断开连接时,GNU netcat的远程实例不会像TCP中那样退出模式。

帮助,我需要一位真正的网络系统工程师,向我展示如何为实际应用实现UDP!

[和有人将所有垃圾从互联网上删除,但让我们保持简单]

[进一步:请不要以库,软件包或shell命令作为解决方案。我必须能够在可能没有该程序的任何嵌入式设备上执行,并且库没有在教我或其他任何人如何自行执行操作。]

java networking udp gnu netcat
1个回答
0
投票

但是当我停止发送数据并断开连接时,无法重新连接以发送更多数据。

这就是GNU Netcat UDP模式的工作方式,只要一台机器上的netcat到netcat都可以使用...

您的客户端需要在断开连接之前从服务器读取响应。因此,当您充当“中间人”时,只要您可以将网络客户端的本地客户端连接到服务器的响应机制,就不必担心这一点。

换句话说,由于您不管理协议,因此需要提供双向半双工连接(1:1通信)。

或者,您可以使用different UDP server,而不是Gnu Netcat。我已经测试了这一代码,并且它在没有MUST-READ-REPLY-BUG的情况下也可以工作,有效地意味着,我的示例代码没有错。必须读取答复功能与正确的UDP服务器实现无关(除非必须与Gnu Netcat 0.7.1兼容的服务器连接)。

© www.soinside.com 2019 - 2024. All rights reserved.