web-dev-qa-db-ja.com

そのようなホストは既知のソケット接続ではありません

このライブラリをTelnet接続用に使用しようとしています。関数を正しく呼び出したところ、以下のコードが実行されましたが、次のエラーが発生して失敗しました。

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: 

コード:

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

        }

私はこの問題を探してここを検索しましたが、それはかなり一般的なようです。一部の人々は、ホストが本当に到達不能である(これはそうではない)、Microsoft .NETの問題、または無視できる単なる例外であると言っています。それが無視できるものであるならば、私はプログラムにそれを渡すようにさせることができないようです。また、それを修正するための解決策を見つけることができないようです。私はこれにかなり迷っています、どんな助けもいただければ幸いです。

3
Kyle

解決策は非常に簡単で見過ごされていました。最初に、tcpclientが名前ではなくIPアドレスを好むことに気づきました。それから、ドメイン名の両側に余分なスペースがあることもあることに気づきました。そこで、以下のコードを使用して文字を削除し、IPに変更しました。

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

関連するがまれな/フリンジケース:使用していたマシン(Parallels Win10 VM)がサイレントにネットワーク接続を失った(インターネットがない)ため、C#.NET 4.7.2 Webアプリ(httpエンドポイントを呼び出す)で同じエラーが発生していました)Parallelsのバグが原因です。ネットワークアダプタを無効にしてから再度有効にすると、エラーはなくなりました。/eyeroll

1
Chris Emerson