Socket 如何知道断开连接的客户端ip地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket 如何知道断开连接的客户端ip地址相关的知识,希望对你有一定的参考价值。

一般情况下是ServerSocket监听本机的一个端口,采用多线程的方式,有一个客户端连接上来就创建一个连接(一个子线程),然后执行这个子线程的run方法,在run方法结束的时候调用socket.close()关闭连接。
代码如下:
try
ServerSocket ss = new ServerSocket(23);

while (true)
Socket client = ss.accept();
Thread thread = new Thread(new Knowledge(client));
thread.start();

catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

所以,如你所见,一般情况下是不用知道客户端的ip地址的,因为你不用担心程序会关错连接。
参考技术A 在请求连接的时候你应该维护一张信息表,知道有哪些IP连过来了,到后来客户端退出的时候,什么问题都解决了。

当客户端更改 IP 地址或断开连接时,如何捕捉 websocket-close 事件?

【中文标题】当客户端更改 IP 地址或断开连接时,如何捕捉 websocket-close 事件?【英文标题】:Hot to catch a websocket-close event when client changes IP address or disconnects? 【发布时间】:2014-01-16 03:49:57 【问题描述】:

我正在使用网络套接字开发应用程序。服务端使用Java编写,使用Netty作为应用框架,客户端使用javascript/jquery编写。我想捕捉任何类型的客户端断开连接,但实际上我只能在客户端转到不同的网站或只是重新加载应用程序页面时才能做到这一点。相反,如果客户端即时更改 IP 或禁用网络接口(无线或以太网),则关闭事件仅由客户端捕获,而不是由服务器捕获。有没有办法在不使用 ping 消息的情况下也捕获这种关闭事件?

【问题讨论】:

【参考方案1】:

您应该发送 PING/PONG 以实际检测对等方是否出现故障。

【讨论】:

我本来希望避免这种情况,主要是因为 javascript 没有任何实现,但是好吧......如果它是唯一的解决方案。

以上是关于Socket 如何知道断开连接的客户端ip地址的主要内容,如果未能解决你的问题,请参考以下文章

C# TcpListener如何知道客户端已经断开连接

C语言关于socket中如何判断客户端是不是与服务器保持连接

如何从客户端断开和重新连接 socket.io?

当客户端更改 IP 地址或断开连接时,如何捕捉 websocket-close 事件?

如何获得Socket连接客户端的IP地址

php socket 获取客户端ip地址