众所周知,TcpListener只负责监听,所以没法直接获取客户端ip,这时还是要使用TcpClient才能获取。
下面直接贴上代码,已经测试过可以正常使用。
IPAddress ip = IPAddress.Parse(IpAddress.Text);
int port = int.Parse(Port.Text);
IPEndPoint endPoint = new IPEndPoint(ip, port);
//listener是全局变量
listener = new TcpListener(endPoint);
listener.Start();
listener.BeginAcceptSocket((ar) =>
{
//这里获取客户端ip
TcpClient client = listener.EndAcceptTcpClient(ar);
var connectedClient = client.Client.RemoteEndPoint.ToString();
}, null);
实测效果: