我是网络套接字的新手,我为Web套接字客户端和服务器编写了一个示例C#控制台应用程序。当从客户端连接到服务器时,如果我将HTTPListenerPrefix URl指定为客户端或服务器的IP地址(但不是两者),则会收到上述异常。如果我改为指定机器名,那么一切都按预期工作。
服务器代码:
//server.Start("http://inpsservice10:80/");
server.Start("http://131.163.140.92:80/");
}
public async void Start(string httplistenerPrefix)
{
HttpListener httplistner = new HttpListener();
httplistner.Prefixes.Add(httplistenerPrefix);
httplistner.Start();
Console.WriteLine("Listening");
while(true)
{
HttpListenerContext httplistencontext = await httplistner.GetContextAsync();
if (httplistencontext.Request.IsWebSocketRequest)
ProcessRequest(httplistencontext);
else
{
httplistencontext.Response.StatusCode = 400;
httplistencontext.Response.Close();
}
}
}
客户代码:
Connect("ws://131.163.140.92:80/").Wait();
private static async Task Connect(string uri)
{
Thread.Sleep(1000);
ClientWebSocket webSocket = null;
try
{
webSocket = new ClientWebSocket();
await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None); //i'm getting exception here.
await Task.WhenAll(Receive(webSocket), Send(webSocket));
}
catch (Exception ex)
{
Console.WriteLine("Conenct: " + ex.Message);
}
}