java - UDP - 如何获取传入数据报的目标地址
问题描述
DatagramSocket socket = new DatagramSocket(3000);
byte[] buffer = new byte[65536];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
//packet.getDestAddress()
我想获取数据报到达的 IP 地址。我没有任何想法。
解决方案
我认为解决这个问题的方法是改变
DatagramSocket socket = new DatagramSocket(3000);
至
InetAddress localAddr = ...
DatagramSocket socket = new DatagramSocket(3000, localAddr);
这样,您的套接字将绑定到特定的 IP 地址(而不是所有本地地址),并且它只会获取寻址到该 IP 地址的数据包。如果您想将数据包地址接收到多个地址并区分不同的 IP 地址,您可以DatagramSocket
为每个 IP 地址创建一个不同的地址。
(处理多个套接字的复杂性可能会让您重新考虑是否真的需要知道传入数据报的目标 IP。)
推荐阅读
- python - Django-simple-history 错误设置 ChangeReason
- c# - epplus 获取列标题
- laravel - Azure 应用服务存在于子目录中时,如何设置其默认文档?
- javascript - 使用 If 语句代替单元测试
- swift4 - 在 google 地方 ios sdk 中显示的自定义地方
- javascript - 电子js上的地理定位
- wordpress - 如何从本地系统渲染和存储 WP 数据
- c++ - 检查 QDragEnterEvent 和 QDropEvent 中的 QMimeData
- java - java.lang.illegalStateException 当让 mediaPlayer.getCurrentPosition 和 SeekBar 在 Pause 时进入 Intial
- cytoscape.js - 如何在 Cytoscape 中设置 panZoom 小部件的上限和下限?