Running TCPListener from a Windows Service












0














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










share|improve this question






















  • 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
















0














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










share|improve this question






















  • 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














0












0








0







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










share|improve this question













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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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


















  • 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












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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Florida Star v. B. J. F.

Danny Elfman

Lugert, Oklahoma