java - 如何接收从java程序发送的数据包
问题描述
我有以下 Java 代码:
DatagramSocket s = new DatagramSocket();
DatagramPacket p = new DatagramPacket(data, data.length, address, port);
s.send(p);
s.close();
因此,这会将 a 发送DatagramPacket
到端口的地址。如何使用一些 Linux 脚本在地址端接收数据包,或者在另一端不编写任何类似的 java 代码?
解决方案
任何外壳(不仅仅是bash
)的一种方法是使用socat:
socat -u udp-recvfrom:PORT stdout
将侦听发送到给定端口的一个数据包,回显它,然后退出。udp-recv
会做同样的事情,但不是在一个数据包后退出,而是永远循环。如果要强制使用 IPv4 或 IPv6,请分别使用udp4-XXX
and或or选项(默认为 IPv4)。udp6-XXX
-4
-6
一些有用的目的地而不是stdout
:create:FILENAME
会将数据报写入给定文件,覆盖现有内容(Sosocat -u udp-recvfrom:PORT stdout > FILENAME
和socat -u udp-recvfrom:PORT create:FILENAME
是等效的),并将exec:COMMANDLINE
以数据报作为其标准输入运行给定命令。有关更多信息,请参阅文档。
推荐阅读
- swiftui - 渲染后swiftui页面空白
- javascript - 使用 axios 取消请求时是否会出现延迟
- typescript - Vue Prop 未定义,和/或不能在 v-for 上使用。使用打字稿和装饰器
- java - Java读写高分
- python - Sympy - Lambdify - 虚拟变量的挖掘名称
- git - 名为“master”的分支是特殊的吗?
- nativescript - nativescript-custom-local-notifications 插件给出:无法读取未定义错误的属性 \'Builder\'
- assembly - 在 MIPS 中访问 .space 元素(降序)
- spring - Spring Boot JPA OneToMany 返回 Null
- sql - SQL, max(), 分组依据