java udp通信求助
网上看到的都是接收端和发送端分开的,不适合我的业务。我想实现这么一个功能,我需要通过udp去收发数据,当我监听一个端口后,会有好多个客户端发来数据,保存这些ip和端口,然后我可以选择每个ip客户端去回复数据,但这个过程中存在一个问题,比如我用udp监听8000端口,回复给客户端的数据必须是通过8000这个端口发出去的,否则客户端接收不到。
高手如果可以用swing写一个例子的话,太感激不尽了,可以包含打开,关闭端口,接收到数据后在界面中有个列表显示发来的ip,通过选择这些ip就可以回发数据。
可能功能对于大家比较简单,可是对于我这个菜鸟来说,我的确不会,网上的也没有合适的。
不知道可以不,可以的话高手发我邮箱吧125208162@qq.com
特别感谢,奉上我的所有积分。 java udp通信 求助 --------------------编程问答--------------------
等待楼下有时间写的同志 --------------------编程问答--------------------
哎,确实耽搁大家的时间,估计没人帮我都。 --------------------编程问答-------------------- 为啥回覆也必须用8000端口来发送?这是客户神奇的要求,还是你自己的要求?
求含界面完整代码的话,怕是很难有人帮你。 --------------------编程问答--------------------
跟硬件通信,必须是从监听的端口发出去的,没有界面也可以的。 --------------------编程问答-------------------- 那么主体就这样吧:
DatagramSocket socket = new DatagramSocket(PORT));
// 采用循环接收数据
while (true) {
// 读取Socket中的数据,读到的数据放入inPacket封装的数组里
socket.receive(inPacket);
// 组包,发回给原端口
outPacket = new DatagramPacket(... , ... , inPacket.getSocketAddress());
// 发送数据
socket.send(outPacket);
}
--------------------编程问答--------------------
非常谢谢,我仔细查看了下只要用一个DatagramSocket来发的话就保证发和接是一个端口。我在看看,如何回复多个客户端,得把ip保存在set中,然后发的时候进行比较在发。应该理论对着。 --------------------编程问答-------------------- 建议尽量用同步处理机制,也就是在一次循环中接收并回复一个客户端,这样你不用解决并发问题。
否则要对该Socket的send和receive都做同步保护,有点太复杂了。 --------------------编程问答--------------------
这样会存在问题,收到后是可以直接回复,可是想再次获取数据的时候就得向客户端发送请求命令了。 --------------------编程问答-------------------- 程序试着写好了,做成swing收发都没问题,想用web通过dwr来调用还是存在一点问题,继续研究下。
补充:Java , Java SE