我试图找出可以使用哪些 C# 方法或某些已知变量的属性来确定有关客户端的信息。沟通进展顺利。我正在使用 NetTCPBinding 并指定了一个端口,比如说 9000。我对 TCP 连接的理解是,这是侦听端口,但来自客户端的通信将发生在另一个端口上。
现在,我正在查看客户端调用服务器方法时的内部情况,并探测OperationContext.Current以获取可能显示消息来源的任何信息。我确实在 OperationContext.Current.Channel.ListenUri.Syntax.m_Port 下看到另一个端口号为 808。我从此链接中读取 https://superuser.com/questions/1159747/windows-advanced-firewall-why-is-port -808-open-by-default 这是来自 Microsoft 的端口共享端口。那么,这是正在发生通信的端口吗?如果没有,我该如何获取通信发生的实际端口?
(造成这种情况的更大原因是我正在尝试执行强化并确保只有有效的客户端(始终是同一台机器)才能连接到该服务器。)
这是示例代码。
RemoteEndpointMessageProperty remoteEndpoint = OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
if (remoteEndpoint != null)
{
string clientIPAddress = remoteEndpoint.Address;
int clientPort = remoteEndpoint.Port;
}
else
{
Console.WriteLine("Can't get info from remote endpoint");
}
return string.Format("You entered: {0}", value);