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










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 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















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










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 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













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










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 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


















  • 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

















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',
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






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















 

draft saved


draft discarded



















































 


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

How to change which sound is reproduced for terminal bell?

Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

Can I use Tabulator js library in my java Spring + Thymeleaf project?