我正在尝试使用此库进行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问题或者只是一个可以忽略的例外。如果它是可以忽略的东西,我似乎无法让程序通过它。我似乎也无法找到解决它的任何解决方案。我很遗憾这一点,任何帮助都会受到赞赏。
答案 0 :(得分:8)
相关但罕见/边缘的情况:我在C#.NET 4.7.2 Web应用程序中遇到了相同的错误(调用http端点),因为我所在的计算机(Parallels Win10 VM)已经静默地失去了网络连接(没有互联网)是由于Parallels错误。一旦禁用并重新启用了网络适配器,错误就会消失。 / eyeroll
答案 1 :(得分:4)
解决方案很容易被忽视。首先我注意到tcpclient更喜欢ip地址而不是名字。然后我也意识到有时在域名的两边都有额外的空格。所以我使用下面的代码去除字符并将其更改为ip。
string.Trim();
//Telnet Start
IPHostEntry hostInfo = Dns.Resolve(hostnamehere);
答案 2 :(得分:1)
我将把这个答案放在这里,供那些像我一样遇到此错误但似乎从未找到答案的人
如果您尝试使用Dns.GetHostEntry(ClientIP)从公司网络内的DNS服务器中获取客户端主机名,并且每次您不断收到“没有此类主机是已知的套接字连接错误”,则说明您的DNS服务器可能没有为您在代码中传递的IP范围设置反向查找区域。
例如,我有一个与我们的Web应用程序一起使用的程序,该程序可以捕获提交帮助请求的员工的计算机名称和IP地址。如果使用该应用程序的计算机位于反向查找区域中的vlan上,则此方法有效。
如果您可以访问域的DNS服务器,请为您在域上使用的所有IP地址添加反向查找区域,或者由网络管理员来做。
请始终尝试一下,以防万一您遇到有人从网络外部访问您的Web应用程序的情况。
知道这将节省我数小时的挫败感。