我使用的是VS2012和GRAPVEN3.0.4,当我使用带有本地主机名的Grapevine同一台机器时,一切都运行得很好。如果我想从带有客户端其他PC访问,服务器无法开始使用主机名ip地址或计算机名进行侦听
如果我尝试服务器pc将主机名设置为localhost,它将开始侦听,但当从具有IP或名称服务器其它PC到达时,返回错误请求400
是不是我的代码或库出了问题。
我的服务器代码是
public class embeddedHTTP
{
private RESTServer Server;
public void ServerStart()
{
try
{
Server = new RESTServer();
Server.Port = GlobalVars.HttpHostPort;
Server.Host = GlobalVars.HttpHostAdress; // THIS ONLY WORKS FOR LOCALHOST
Server.MaxThreads = 20;
Server.Start();
while (Server.IsListening)
{
Thread.Sleep(GlobalVars.HttpHostRespTime);
}
}
catch (Exception ex)
{
messenger.logque("embedded HTTP server not started, Error ID : 52", 3, null);
}
}
public void ServerStop()
{
Server.Stop();
}
public sealed class MyResource : RESTResource
{
//d+$^ [a-zA-Z]+
[RESTRoute(Method = Grapevine.HttpMethod.GET, PathInfo = @"/")]
public void HandleFooRequests(HttpListenerContext context)
{
//String RawuR = context.Request.RawUrl;
String URL = Convert.ToString(context.Request.Url);
String ResultXML = brain.HTTPCMD(URL);
this.SendTextResponse(context, ResultXML);
}
}
}发布于 2016-06-02 00:09:26
如果您无法从远程计算机访问服务器,则可能是您正在运行防火墙,该防火墙正在阻止到您正在侦听的端口的入站通信。试着在你的防火墙上打开这个端口,看看它对你是否有效。
How to Open a Port in the Windows 7 Firewall
此外,您还可以通过使用星号(*)作为主机名来监听所有主机。
https://stackoverflow.com/questions/32989988
复制相似问题