Kyle
Kyle

Reputation: 2379

No such host is known socket connection

I'm trying to work with this library for telnet connections. I have called the function correctly and it executes the code below but fails giving the following error:

System.Net.Sockets.SocketException was unhandled
  HResult=-2147467259
  Message=No such host is known
  Source=System
  ErrorCode=11001
  NativeErrorCode=11001
  StackTrace:
       at System.Net.Sockets.TcpClient..ctor(String hostname, Int32 port)
       at MinimalisticTelnet.TelnetConnection..ctor(String Hostname, Int32 Port) in c:\users\kylec\documents\visual studio 2010\Projects\Mail Server Capture\Mail Server Capture\TelnetInterface.cs:line 36
       at Mail_Server_Capture.Form1.btn_MailGet_Click(Object sender, EventArgs e) in c:\users\kylec\documents\visual studio 2010\Projects\Mail Server Capture\Mail Server Capture\Form1.cs:line 55
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at Mail_Server_Capture.Program.Main() in c:\users\kylec\documents\visual studio 2010\Projects\Mail Server Capture\Mail Server Capture\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

Code:

public TelnetConnection(string Hostname, int Port)
        {
            tcpSocket = new TcpClient(Hostname, Port);

        }

I have searched here looking for this problem and it seems pretty common. Some people are saying the host truly is unreachable (this is not the case), its a Microsoft .NET problem or its just an exception that can be ignored. I can't seem to get the program to pass it though if it is something that can be ignored. I also can't seem to find any solutions as to fixing it. I'm pretty lost on this one, any help would be appreciated.

Upvotes: 19

Views: 196429

Answers (6)

anilsezar
anilsezar

Reputation: 11

If you are using hostname to connect, try switching to ip and see if that works. That fixed this error for me.

Here is my connection string before:

      "ConnectionStrings": {
"DefaultConnection": "Host=rpi5-8gb-green.local;Port=9999;Username=myuser;Password=mypass;Database=postgres;"}

Here is the updated and working one:

  "ConnectionStrings": {
"DefaultConnection": "Host=192.168.1.120;Port=9999;Username=myuser;Password=mypass;Database=postgres;"}

Since I used avahi-daemon for ease, why not use hostname directly at the code too? For me, using the ip is the solution.

Upvotes: 1

Mohsin Ali
Mohsin Ali

Reputation: 1

"ConnectionStrings": {
    "AppCon" : "Server=yourDbServer;Database=YourDbName;Host:localhost;Port=5050;
User Id=postgres;Password=1234"
}

Upvotes: -1

Sam Fenilto
Sam Fenilto

Reputation: 39

#No such host is known in asp.net web api

In your appsetting.json file check for the connection string if host name not included add the host name eg:

"ConnectionStrings": {
    "AppCon" : "Server=yourDbServer;Database=YourDbName;Host:localhost;Port=5050;User Id=postgres;Password=1234"
}

This Solved My problem.Check Other Forums also

Upvotes: 3

Christopher
Christopher

Reputation: 2266

Related but rare/fringe case: I was getting this same error in my C# .NET 4.7.2 web app (calling a http endpoint) because the machine I was on (a Parallels Win10 VM) had silently lost its network connection (no internet) due to some Parallels bug. Once I disabled and re-enabled the network adapter the error went away. /eyeroll

Upvotes: 18

Anthony Griffis
Anthony Griffis

Reputation: 41

I'm going to put this answer in here for people who are getting this error like me, who never seemed to find an answer:

If you're trying to grab a client hostname from the DNS server within your company's network using: Dns.GetHostEntry(ClientIP) and each time you keep getting the "No such host is known socket connection error," your DNS server may not have Reverse Lookup Zones set for the IP range you're passing in code.

For example, I have a program that works with our web application that captures the computer name and IP address of the employee submitting a help request. It worked if the computer using the application was on a vlan that was in the reverse lookup zone.

If you have access to your domain's DNS server, add reverse lookup zones for all of the IP addresses that you use on your domain, or have your network administrator do it.

Always have a try catch around it, just in case you have a situation where someone accesses your webapp from outside of your network.

Knowing this would have saved me hours of frustration.

Upvotes: 4

Kyle
Kyle

Reputation: 2379

The solution was something quite easy and overlooked. First I noticed that the tcpclient prefers an ip address and not a name. Then I also realized that sometimes there were extra spaces on either side of the domain name. So I used the below code to strip the characters and change it to an ip.

string.Trim();
//Telnet Start
IPHostEntry hostInfo = Dns.Resolve(hostnamehere);

Upvotes: 8

Related Questions