如何通过Socket获得所有客户端连接的IP地址啊?并能够得到客户端的连接状态啊?用的是TCP

时间:2021-07-30 16:12:08
本人刚刚接触Socket方面的东西,现在在做一个实施数据方面的东西。客户端需要通过服务器端提供的时时数据显示在用户指定的位置。现在有个问题,服务器端需要能够查看当前所有连接的 客户端的IP地址和机器名、并当客户端失去连接时(非断电或网线断开),能够获得断开的客户端的IP地址作为记录。

请问各位:如何在Sokcet中实现这两个功能呢?求帮忙。

9 个解决方案

#1


'返回远程客户端的IP和端口号
TcpListener tcpl=new TcpListener(port);
Socket s=tcpl.AcceptSocket();
label1.text=((IPEndPoint)s.RemoteEndPoint).Address.ToString();
label2.text=((IPEndPoint)s.RemoteEndPoint).Port.ToString();

#2


至于获取连接状态你可以看下面这篇帖子
http://topic.csdn.net/t/20040827/17/3316404.html

#3


谢谢您的及时回复。监听客户端IP已经可以了。
现在针对客户端断开状态这部分好像有些问题,因为使用了异步通信方式,造成客户端断开后不能发现或需要很长时间才能监听到断开的客户端。。如何解决此问题啊?谢谢了!

#4


MSDN上查 TcpClient和TcpListener 的相关例子

#5


顶一下!让大家多提意见。

#6


你try catch 一下 ,在通信异常的状态下,就说明断开了嘛 

#7


客户端失去连接时(非断电或网线断开),服务端会接收到NULL或是产生异常的错误处理

#8


string ip = ((IPEndPoint)socket.RemoteEndPoint).Address.ToString();

#9


客户端断开时会向服务器发送消息,服务端接收到NULL,判断数据长度是否为0,0则表示客户端断开

#1


'返回远程客户端的IP和端口号
TcpListener tcpl=new TcpListener(port);
Socket s=tcpl.AcceptSocket();
label1.text=((IPEndPoint)s.RemoteEndPoint).Address.ToString();
label2.text=((IPEndPoint)s.RemoteEndPoint).Port.ToString();

#2


至于获取连接状态你可以看下面这篇帖子
http://topic.csdn.net/t/20040827/17/3316404.html

#3


谢谢您的及时回复。监听客户端IP已经可以了。
现在针对客户端断开状态这部分好像有些问题,因为使用了异步通信方式,造成客户端断开后不能发现或需要很长时间才能监听到断开的客户端。。如何解决此问题啊?谢谢了!

#4


MSDN上查 TcpClient和TcpListener 的相关例子

#5


顶一下!让大家多提意见。

#6


你try catch 一下 ,在通信异常的状态下,就说明断开了嘛 

#7


客户端失去连接时(非断电或网线断开),服务端会接收到NULL或是产生异常的错误处理

#8


string ip = ((IPEndPoint)socket.RemoteEndPoint).Address.ToString();

#9


客户端断开时会向服务器发送消息,服务端接收到NULL,判断数据长度是否为0,0则表示客户端断开