我面临停止 socket.connect() 函数的问题。有时我的本地机器和远程机器之间的物理链接可能很好,但由于某种原因,无法访问远程端点,可能是防火墙或远程机器上的端口被关闭。在这种情况下,socket.connection() 函数会卡在那里等待无限长的时间……即使以后禁用防火墙,该函数仍然会永远卡在那里。
所以我试图找到一种方法来在遇到上述情况时停止 socket.connect() 。
问题是我正在使用一个 .net 微框架,其中我没有超时机制或任务或 socket.beginconnect();
我正在尝试使 socket.connect() 本身成为一个线程,并尝试在 2 秒后中止它 (!thread.join(2000))。但是,我不太了解 abort() 函数,而且我听说这是一种不明智的做法,而且它毕竟不起作用。
现在我不知道该怎么办?谁能帮忙?多谢
main function
{
m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Set up socket
remoteEndPoint = new IPEndPoint(IPAddress.Parse(IP_add), 30000);
m_socket.Connect(remoteEndPoint);
myThread.Start();
if (!myThread.Join(2000))
{
Debug.Print(myThread.ThreadState.ToString());
myThread.abort();
}
}
private static void socket_connect()
{
m_socket.Connect(remoteEndPoint);//Connect to remote device
}