Java 套接字编程 LAN Messenger

Java Socket Programming LAN Messenger

我正在使用 Lan Messenger,如何检查其他人的系统是否已插入 LAN? 意思是,那个人在线吗?

此外,我们的旅馆有 LAN,我已经 运行 多次尝试连接客户端服务器程序,但它 运行 在我的系统上没问题(同一台上有 2 个客户端)机器作为服务器)但是当服务器和客户端在不同的机器上时它不会 运行。 代码非常好。 可能是什么原因?要更改任何特殊的防火墙设置以允许数据包吗?

我现在正在使用套接字创建一个聊天服务器,我的做法是让每个用户大约每 20-30 秒查询一次服务器。服务器跟踪用户 "refreshed" 自己的最后一次。如果用户在一段时间或更长时间内没有这样做,那么服务器会告诉任何试图联系该用户的人他们处于离线状态。

这是一个非常好的工作参考。查看服务器端的 Server 文件夹和客户端的 src 文件夹: https://code.google.com/p/simple-android-instant-messaging-application/source/browse/trunk/#trunk%2FServer%253Fstate%253Dclosed

如果您只想在 LAN 内通信,那么 link 中的套接字实现绝对是您想要的。如果您想在全球范围内进行通信(1 个 LAN 中的用户与其他 LAN 中的用户),那么您需要对其进行一些重新设计,以便您的服务器套接字实际上位于某个接受客户端连接的服务器上。当前的实现在每个客户端中创建一个服务器套接字,并接受来自其他试图与之通信的客户端的连接。此设计因 NAT 路由器而中断(除非您真的想知道,否则我不想解释的原因)。