上次在:http://topic.csdn.net/u/20100604/10/e21d09b0-d7a4-44ab-a104-c0580dcf4345.html?1010384024
发帖(帖以接)。上次没有答案,这次求助上次相同问题,。这再次发帖。
描述:
我用C# vs2005 做基于 c/s架构的 winform 程序。编写出来的代码是在 win 2003环境下运行。我在win2003服务器上建立一些远程用户,其它电脑可以通过用户名和密码远程连接到win2003这台的服务器上。
当这些远程用户连接到这台win2003服务器上的时候,我想获得他们的IP地址。这样如何获得?这问题我已经问了三遍,希望csdn 里的微软专家可以出来帮助。
发帖(帖以接)。上次没有答案,这次求助上次相同问题,。这再次发帖。
描述:
我用C# vs2005 做基于 c/s架构的 winform 程序。编写出来的代码是在 win 2003环境下运行。我在win2003服务器上建立一些远程用户,其它电脑可以通过用户名和密码远程连接到win2003这台的服务器上。
当这些远程用户连接到这台win2003服务器上的时候,我想获得他们的IP地址。这样如何获得?这问题我已经问了三遍,希望csdn 里的微软专家可以出来帮助。
如果通过你的c/s架构程序,那就好办了呀
连接时,如果通过udp或tcp连接,会自动将客户端自身ip地址和端口带过来的;
如果通过其他方式连接,你可以在客户端把自己的ip地址先传给服务器
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket client = newsock.Accept(); // 当有可用的客户端连接尝试时执行,并返回一个新的socket
IPEndPoint clientip = (IPEndPoint)client.RemoteEndPoint;
Console.WriteLine(" connect with client: " + clientip.Address + " at port: " + clientip.Port);是要这样吗?
那么:用户名: Environment.UserName
会话ID: Process.GetCurrentProcess().SessionId
客户IP: 用WTSQuerySessionInformation API,查询WTSClientAddress(或其他信息),最后记得用WTSFreeMemory清场。具体见MSDN WTSQuerySessionInformation Function
在 Windows Socket Provider Interface 上面自己加一层过滤规则,踢掉你想踢掉的链接
如果是自己写的程序,自己连IP都不知道,估计没啥好说的了。
或者说远程客户是通过什么客户端软件连接到你的win2003服务器的?