Я пытаюсь создать службу Windows, которая прослушивает определенный порт для входящего сериализованного объекта, а затем выполняет какое-то действие, однако при каждом запуске я получаю следующую ошибку:
System.Net.Sockets.SocketException (0x80004005): обычно допускается только одно использование каждого адреса сокета (протокол / сетевой адрес / порт)
Вот код, который работает:
protected override void OnStart(string[] args)
{
Thread t = new Thread(Server.StartServer);
t.Start();
}
Метод StartServer выглядит следующим образом:
public static void StartServer()
{
TcpListener server = null;
try
{
server = new TcpListener(IPAddress.Loopback, 8889);
server.Start();
}
catch(Exception e)
{
//write to a log file and close
}
for (; ; )
//Some more code that handles the serialization etc
Похоже, в сообщении говорится, что что-то еще уже прослушивает этот сокет, однако, когда я смотрю с использованием CMD и netstat -a, я ничего не вижу на этом порте, и кажется, что это происходит независимо от того, на что я меняю порт прослушивания. , Исключение возникает в строке «server = new TcpListener (IPAddress.Loopback, 8889);».
Почему возникает эта ошибка и как я могу заставить ее работать должным образом?
* Отредактировано, чтобы заметить, что я также пробовал это как консольное приложение, и оно, кажется, работает, оно не работает только при запуске в качестве службы Windows