Running TCPListener from a Windows Service
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 |
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 '18 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 '18 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 '18 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 '18 at 9:09
add a comment |
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 '18 at 22:44
Tom HalversonTom 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 '18 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 '18 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 '18 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 '18 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 '18 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 '18 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 '18 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 '18 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 '18 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 '18 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 '18 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 '18 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 '18 at 23:42
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 '18 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 '18 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 '18 at 9:09
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
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
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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 '18 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 '18 at 23:39
This sounds like you're trying to listen on the same port twice (or more)
– Francis Lord
Nov 12 '18 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 '18 at 9:09