Итак, я пытаюсь смоделировать эхо-сервер в C # с использованием классов TcpListener
и TcpClient
, этот сервер работает на http://127.0.0.1:6502
.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace WebServer
{
class Program
{
public static TcpListener Server = new TcpListener(IPAddress.Any, 6502);
public static void Main(string[] args)
{
Server.Start();
Thread ListenerThread = new Thread(Listener);
ListenerThread.Start();
}
public static void Listener()
{
while (true)
{
TcpClient C = Server.AcceptTcpClient();
Console.WriteLine(C.Client.RemoteEndPoint + " Connected");
Thread WorkerThread = new Thread(Worker);
WorkerThread.IsBackground = true;
WorkerThread.Start(C);
}
}
public static void Worker(object Client)
{
try
{
NetworkStream NS = (Client as TcpClient).GetStream();
StreamReader SR = new StreamReader(NS);
StreamWriter SW = new StreamWriter(NS);
while (true)
{
string Line = SR.ReadLine();
Console.WriteLine("Recieved " + Line + " From Client " + (Client as TcpClient).Client.RemoteEndPoint);
SW.WriteLine(Line);
Console.WriteLine("Sent " + Line + " To Client " + (Client as TcpClient).Client.RemoteEndPoint);
}
}
catch { }
}
}
}
На стороне клиента яПолучил веб-страницу index.html
, размещенную на статическом сервере, который работает на http://127.0.0.1:8080
, здесь я использую WebSocket
API для создания прямого соединения с сервером.
<script>
window.addEventListener("load", function() {
let ws = new WebSocket("ws://127.0.0.1:6502");
ws.onopen = function() {
alert("Connection Opened");
ws.send("A Test Message");
};
ws.onmessage = function(e) {
alert("Recieved: " + e.data);
};
ws.onclose = function(e) {
alert("Connection has been closed");
};
ws.onerror = function(e) {
alert("An error has occured");
};
});
</script>
Проблема в том, чтоЯ получаю следующее сообщение об ошибке в консоли:
WebSocket connection to 'ws://127.0.0.1:6502/' failed: WebSocket opening handshake timed out
Что я здесь не так делаю?