请问如果现在已经有一个tcpclient连接成功了,并传输了数据
我怎么才能获得这个tcpclient的PC信息呢
比如该客户端的IP地址,机器名等等

解决方案 »

  1.   

    可以通过tcpclient.Socket.RemoteEndPoint来获取客户端的IP地址!
      

  2.   

    如果通过了路由 socket.RemoteEndoint.Address 就不是本机的了,可能路由器的了,前两天有一哥们正为这事情发愁呢.如果不经过路由就没问题,知道了IP再得机器名很容易了.
      

  3.   

    LZ我上边说的是这个贴子:http://community.csdn.net/Expert/topic/5626/5626457.xml?temp=.4091303
      

  4.   

    我已经知道答案了.
    1.因为tcpclient的IP等属性是首保护的,所以可以继承一个tcpclient类来提取
    2.可以用反射的方法来提取(reflection)
    具体方法是
     Public ReadOnly Property ClientIP(ByVal _client As TcpClient) As String 
            Get
                Dim PublicIP As String = Nothing
                Try
                    Dim pi As PropertyInfo = _
                            _client.GetStream.GetType.GetProperty( _
                            "Socket", BindingFlags.NonPublic Or BindingFlags.Instance)
                    If Not pi Is Nothing Then
                        PublicIP = pi.GetValue(_client.GetStream, Nothing).RemoteEndPoint.ToString.Split(":")(0)
                    End If
                Catch ex As System.Exception
                    PublicIP = String.Empty
                End Try
                Return PublicIP
            End Get
        End Property
      

  5.   

    wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴) ( ) 信誉:100    Blog   加为好友  2007-7-3 14:59:58  得分: 0  
     
     
       
    可以通过tcpclient.Socket.RemoteEndPoint来获取客户端的IP地址!================================================================
    tcpclient 好像没有这个方法.
    我用的是VB.net 是缺少引用么
      

  6.   

    打错了!
    tcpclient.Client.RemoteEndPoint