java 如何 监听 用户 状态

来源:百度知道 编辑:UC知道 时间:2024/06/09 21:57:18
java 如何 监听 用户 状态
我在用 swing 搞一个 仿qq部分功能 的应用
局域网通信。。。
如果有人上线或下线,发送消息,
广播 ,给其他用户提示。。
如何实现啊
这是我 接受端的 代码。。
我这个是 执行以下 才能接受发送方的信息。。
我想
通过监听。。然后 发送方 发送某种信息过来 我就可以 监听到然后 执行相应操作

其他方式解决也可以

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UdpRecv {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(3001);// 创建接收数据报套接字并将其绑定到本地主机上的指定端口
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, 1024);
ds.receive(dp);
String strRecv = new String(dp.getData(), 0, dp.getLength()) + " from "
+ dp.getAddress().getHostAddress() + ":" + dp.getPort();
System.out.println(strRecv);
ds.close();
}
}

这个和协议有关,IP协议的广播,根据你局域网的地址来计算广播地址,然后往那个地址发,路由会直接转发给所有该子网的IP

你可以学习分析一下java现成的Socket以及ServerSocket通信方式,简单的讲只是CS结构、Tcp协议、Socket通信,实现你这个简单的功能完全可以了

实现方法有很多种,比如:有人上线,上线就立即通知服务器,由服务器发送广播给所有用户说xxx上线了,下线也一样。还有一种是被动法,就是类似QQ的做法,由服务器每阁多少秒发送一次信号给所有人,如果哪个用户在一定时间内收不到信号,就说明他下线了,即可通知所有人他下线了。

可以参考一下设计模式(观察者模式)