'Only one usage of each socket address (protocol/network address/port) is normally permitted?
I've been looking for a serious solution on google and I only get "Registry solutions" kind of stuff which I don't think even relate to my problem.
For some reason I get this Error, while I'm only starting the TcpListner once, and when and if it fails, I stop the server.
Here is my code:
class Program
{
private static string ServerName = "";
private static string UserName = "";
private static string Password = "";
private static string dbConnectionSring = "";
private static X509Certificate adminCertificate;
private static byte[] readBuffer = new byte[4096];
static void Main(string[] args)
{
Console.WriteLine("Please grant SQL Server access to the Admin Server:\n");
Console.Write("Server Name: ");
ServerName = Console.ReadLine();
Console.Write("\nUser Name: ");
UserName = Console.ReadLine();
Console.Write("\nPassword: ");
Password = PasswordMasker.Mask(Password);
dbConnectionSring = SQLServerAccess.CreateConnection(ServerName, UserName, Password);
adminCertificate = Certificate.GenerateOrImportCertificate("AdminCert.pfx", "randomPassword");
try
{
Console.WriteLine("Initializing server on the WildCard address on port 443...");
TcpListener listener = new TcpListener(IPAddress.Any, 443);
try
{
Console.WriteLine("Starting to listen at {0}: 443...", IPAddress.Any);
//the backlog is set to the maximum integer value, but the underlying network stack will reset this value to its internal maximum value
listener.Start(int.MaxValue);
Console.WriteLine("Listening... Waiting for a client to connect...");
int ConnectionCount = 0;
while (true)
{
try
{
listener.BeginAcceptTcpClient(new AsyncCallback(AcceptCallback), listener);
ConnectionCount++;
Console.WriteLine(
" Accepted connection #" + ConnectionCount.ToString());
}
catch (SocketException err)
{
Console.WriteLine("Accept failed: {0}", err.Message);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Listening failed to start.");
listener.Stop();
Console.WriteLine(ex.Message);
}
}
catch (Exception ex)
{
Console.WriteLine("Initialiazing server Failed.");
Console.WriteLine(ex.Message);
}
}
Solution 1:[1]
- Open cmd
- Type netstat –ano
- List of process with their ports will be opened
- Search ‘process ID’ of the port you are unable to use (in my case port 11020)
- Open task Manager and Stop that process
- Now your port is ready to use :)
Solution 2:[2]
Option 1
- Open the Command Prompt.
- Type
netstat -ano | findstr ":80"- where "80" is the port number you are searching for. - Look at the last column in the results - the PID.
- For each PID running that you want to kill, execute
taskkill /PID <PID> /Fin the Command Prompt window (where<PID>is the PID that needs to be killed).
Option 2
If Option 1 above doesn't work, try rebooting your machine.
Solution 3:[3]
In order to find the process, it is easy with PowerShell:
$theCulpritPort="8001"
Get-NetTCPConnection -LocalPort $theCulpritPort `
| Select-Object -Property "OwningProcess", @{'Name' = 'ProcessName';'Expression'={(Get-Process -Id $_.OwningProcess).Name}} `
| Get-Unique
Moving forward, if you need to kill the process, then pipe a Stop-Process in the end:
$theCulpritPort="8001"
Get-NetTCPConnection -LocalPort $theCulpritPort -ErrorAction Ignore `
| Select-Object -Property @{'Name' = 'ProcessName';'Expression'={(Get-Process -Id $_.OwningProcess).Name}} `
| Get-Unique `
| Stop-Process -Name {$_.ProcessName} -Force
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | harpreet singh |
| Solution 2 | |
| Solution 3 |

