【发布时间】:2014-11-12 14:06:41
【问题描述】:
我有一个 HttpListener,我有兴趣在其中查看请求客户端的 IP 地址。奖金还可以看到客户端的 DNS,但我不确定这怎么可能,因为据我所知,信息不是通过 HTTP 发送的?
无论如何,据我所知,我应该可以为此使用Request.UserHostAddress,但我只是获取我的本地 IP 地址。我在这里做错了什么?
我应该从哪里获得客户端 IP。
HttpListenerContext context = listener.EndGetContext(result);
string clientName = context.Request.UserHostAddress;
我在服务器输出列表框中写出的地方:
public static void TileString(int x, int y, int z, string dbName, string clientName)
{
int[] tileInts = { z, x, y };
string tileString = string.Join("/", tileInts);
Application.Current.Dispatcher.Invoke(new Action(() =>
{
var mainWindow = Application.Current.MainWindow as MainWindow;
mainWindow.AppendServerOutput("Delivering tile " + tileString + " in format [z, x, y]" + " from " + dbName + " to client " + clientName + "\n");
}));
}
【问题讨论】:
-
客户端 DNS 名称为
context.Request.UserHostName;。但看起来你已经编写了正确的代码。 clientName 是否被某处覆盖?在第一个代码片段之后添加Debug.WriteLine("client is: " + clientName);时会显示什么(确保没有任何内容被覆盖)? -
context.Request.RemoteEndPoint.ToString());显示的是什么?; -
@Sjips Using RemoteEndPoint.ToString() 向我展示了我想要的东西。我不敢相信我错过了那个。谢谢!
标签: c# httplistener