Running TCPListener from a Windows Service
up vote
0
down vote
favorite
I am trying to create a Windows service which listens on a particular port for an incoming serialized object and then performs some action, however every time I start I get the following error:
System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted
Here is the code that's running:
protected override void OnStart(string args)
{
Thread t = new Thread(Server.StartServer);
t.Start();
}
The StartServer method looks like this:
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
The message seems to state that something else is already listening on that socket however when I take a look using CMD and netstat -a I see nothing on that port, and it seems to occur regardless of what I change the listening port to. The exception occurs on the line "server = new TcpListener(IPAddress.Loopback, 8889);".
Why does this error occur and how am I able to make this work properly?
*Edited to note that I have also tried this as a console app and it seems to work, it only fails when running as a Windows Service
c# windows sockets service tcplistener
add a comment |
up vote
0
down vote
favorite
I am trying to create a Windows service which listens on a particular port for an incoming serialized object and then performs some action, however every time I start I get the following error:
System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted
Here is the code that's running:
protected override void OnStart(string args)
{
Thread t = new Thread(Server.StartServer);
t.Start();
}
The StartServer method looks like this:
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
The message seems to state that something else is already listening on that socket however when I take a look using CMD and netstat -a I see nothing on that port, and it seems to occur regardless of what I change the listening port to. The exception occurs on the line "server = new TcpListener(IPAddress.Loopback, 8889);".
Why does this error occur and how am I able to make this work properly?
*Edited to note that I have also tried this as a console app and it seems to work, it only fails when running as a Windows Service
c# windows sockets service tcplistener
This sounds like a permissions thing; is it possibly blocked by Windows Firewall? What account is the service running as?
– Marc Gravell♦
Nov 12 at 23:30
Service runs as the Windows system user, I have tried running with Windows Firewall disabled but unfortunately I got the same result
– Tom Halverson
Nov 12 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 at 23:42
That's what I thought at first but I cannot see anything else listening on that port using netstat -a and the code to create the TCPListener is only called once. It also occurs when I change the port to something else.
– Tom Halverson
Nov 13 at 9:09
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to create a Windows service which listens on a particular port for an incoming serialized object and then performs some action, however every time I start I get the following error:
System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted
Here is the code that's running:
protected override void OnStart(string args)
{
Thread t = new Thread(Server.StartServer);
t.Start();
}
The StartServer method looks like this:
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
The message seems to state that something else is already listening on that socket however when I take a look using CMD and netstat -a I see nothing on that port, and it seems to occur regardless of what I change the listening port to. The exception occurs on the line "server = new TcpListener(IPAddress.Loopback, 8889);".
Why does this error occur and how am I able to make this work properly?
*Edited to note that I have also tried this as a console app and it seems to work, it only fails when running as a Windows Service
c# windows sockets service tcplistener
I am trying to create a Windows service which listens on a particular port for an incoming serialized object and then performs some action, however every time I start I get the following error:
System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted
Here is the code that's running:
protected override void OnStart(string args)
{
Thread t = new Thread(Server.StartServer);
t.Start();
}
The StartServer method looks like this:
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
The message seems to state that something else is already listening on that socket however when I take a look using CMD and netstat -a I see nothing on that port, and it seems to occur regardless of what I change the listening port to. The exception occurs on the line "server = new TcpListener(IPAddress.Loopback, 8889);".
Why does this error occur and how am I able to make this work properly?
*Edited to note that I have also tried this as a console app and it seems to work, it only fails when running as a Windows Service
c# windows sockets service tcplistener
c# windows sockets service tcplistener
asked Nov 12 at 22:44
Tom Halverson
63
63
This sounds like a permissions thing; is it possibly blocked by Windows Firewall? What account is the service running as?
– Marc Gravell♦
Nov 12 at 23:30
Service runs as the Windows system user, I have tried running with Windows Firewall disabled but unfortunately I got the same result
– Tom Halverson
Nov 12 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 at 23:42
That's what I thought at first but I cannot see anything else listening on that port using netstat -a and the code to create the TCPListener is only called once. It also occurs when I change the port to something else.
– Tom Halverson
Nov 13 at 9:09
add a comment |
This sounds like a permissions thing; is it possibly blocked by Windows Firewall? What account is the service running as?
– Marc Gravell♦
Nov 12 at 23:30
Service runs as the Windows system user, I have tried running with Windows Firewall disabled but unfortunately I got the same result
– Tom Halverson
Nov 12 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 at 23:42
That's what I thought at first but I cannot see anything else listening on that port using netstat -a and the code to create the TCPListener is only called once. It also occurs when I change the port to something else.
– Tom Halverson
Nov 13 at 9:09
This sounds like a permissions thing; is it possibly blocked by Windows Firewall? What account is the service running as?
– Marc Gravell♦
Nov 12 at 23:30
This sounds like a permissions thing; is it possibly blocked by Windows Firewall? What account is the service running as?
– Marc Gravell♦
Nov 12 at 23:30
Service runs as the Windows system user, I have tried running with Windows Firewall disabled but unfortunately I got the same result
– Tom Halverson
Nov 12 at 23:39
Service runs as the Windows system user, I have tried running with Windows Firewall disabled but unfortunately I got the same result
– Tom Halverson
Nov 12 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 at 23:42
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 at 23:42
That's what I thought at first but I cannot see anything else listening on that port using netstat -a and the code to create the TCPListener is only called once. It also occurs when I change the port to something else.
– Tom Halverson
Nov 13 at 9:09
That's what I thought at first but I cannot see anything else listening on that port using netstat -a and the code to create the TCPListener is only called once. It also occurs when I change the port to something else.
– Tom Halverson
Nov 13 at 9:09
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271178%2frunning-tcplistener-from-a-windows-service%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
This sounds like a permissions thing; is it possibly blocked by Windows Firewall? What account is the service running as?
– Marc Gravell♦
Nov 12 at 23:30
Service runs as the Windows system user, I have tried running with Windows Firewall disabled but unfortunately I got the same result
– Tom Halverson
Nov 12 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 at 23:42
That's what I thought at first but I cannot see anything else listening on that port using netstat -a and the code to create the TCPListener is only called once. It also occurs when I change the port to something else.
– Tom Halverson
Nov 13 at 9:09