日期:2014-05-17  浏览次数:20726 次

SOCKET网络编程获取请求的IP地址
服务器端如何获得客户端的公网IP地址哩?

------解决方案--------------------
获取IP这东西始终让人蛋疼
------解决方案--------------------
客户端连接服务器端时
服务器收到客户数据 源ip不就是公网ip 吗 难道会局域网IP?
------解决方案--------------------
C# code
 TcpListener myListener = (TcpListener)Asy.AsyncState;
            TcpClient client = myListener.EndAcceptTcpClient(Asy);
            listBox2.Invoke(setlistboxcallback, "已接受客户端连接:" + client.Client.RemoteEndPoint);
            DataReadClass dataread = new DataReadClass(client);
            clientlist.Add(dataread);

------解决方案--------------------
谁知道你如何写“服务器”?以后不要问得这样虚,应该写出至少一行代码来。

一个负责监听的socket,例如TcpListener类型对象的Client属性返回的也是,它的 RemoteEndPoint 就是远程客户端的地址和端口。

如果有人说他做了很久socket开发却说“蛋疼”,看来所谓socket开发经验都是100%掺水的。
------解决方案--------------------
Socket socket = s.Accept();
IPAddress ip = ((IPEndPoint)socket.RemoteEndPoint).Address;
------解决方案--------------------
探讨
谁知道你如何写“服务器”?以后不要问得这样虚,应该写出至少一行代码来。

一个负责监听的socket,例如TcpListener类型对象的Client属性返回的也是,它的 RemoteEndPoint 就是远程客户端的地址和端口。

如果有人说他做了很久socket开发却说“蛋疼”,看来所谓socket开发经验都是100%掺水的。

------解决方案--------------------
你现在测试的服务器 和客户端是在同一局域网吧 要不怎么会得到192地址
一个连接有一个端口阿。。。。。?标识唯一
------解决方案--------------------
C# code
public string GetClientIP()
        {
            string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            if (null == result || result == String.Empty)
            {

                result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            }

            if (null == result || result == String.Empty)
            {

                result = HttpContext.Current.Request.UserHostAddress;

            }

            return result;

        }

------解决方案--------------------
路过的
------解决方案--------------------
7楼和10楼不是给了答案了