错误 当预期状态代码为“101”时,服务器返回了状态代码“400”。
但如果我写,Uri serverUri = new Uri("ws://localhost:8888/");一切都会好起来的。告诉我如何解决这个错误的问题,我在谷歌上找不到任何东西。
我使用 SocketTest 程序通过本地 IP 检查服务器的可用性,它连接成功,但我的客户端根本无法连接
服务器代码
public async Task InitServerAsync()
{
var httpListener = new HttpListener();
httpListener.Prefixes.Add($"http://{ip}:{port}/");
try
{
try
{
httpListener.Start();
}
catch (Exception e)
{
MessageBox.Show($"port: {port} занят, укажите другой порт");
Form1.IsEnabledBtn = true;
return;
}
while (true)
{
await Task.Delay(1);
var httpContext = await httpListener.GetContextAsync();
if (httpContext.Request.IsWebSocketRequest)
{
var webSocketContext = await httpContext.AcceptWebSocketAsync(null);
_ = Task.Run(() => ProcessServerAsync(webSocketContext.WebSocket));
// await ProcessServerAsync();
}
else
{
httpContext.Response.StatusCode = 400; // Bad Request
httpContext.Response.Close();
}
}
}
catch
{
httpListener.Stop();
}
}
客户端代码
using ClientWebSocket webSocket = new ClientWebSocket();
Uri serverUri = new Uri("ws://113.168.76.1:8888/");
Console.WriteLine("Нажмите любую кнопку для соеденения");
Console.ReadKey();
Console.WriteLine("Подключение");
try
{
// Подключение к серверу
var sendBuffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes("hello"));
await webSocket.ConnectAsync(serverUri, CancellationToken.None);
await webSocket.SendAsync(sendBuffer, WebSocketMessageType.Text, true, CancellationToken.None);
Console.WriteLine("Подключено к серверу!");
// Запуск задачи для получения сообщений
await Recive();
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
Console.ReadKey();
}




