我试图创建一个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查看时,该端口上什么也看不到,并且无论将监听端口更改为什么,它似乎都会发生。异常发生在“服务器=新的TcpListener(IPAddress.Loopback,8889);”行上。
为什么会出现此错误?如何使它正常工作?
*编辑后注意到,我也曾尝试将其作为控制台应用程序使用,并且似乎可以正常运行,但只有在作为Windows服务运行时才会失败