public static void Disconnect(ref TCP_STRUCT CRT) { try { CRT.sck.Disconnect(true); CRT.sck.Close(); CRT.IsConnected = false; } catch { } }
public static void Connect(ref TCP_STRUCT CRT) { CRT.timeoutMSec = 1000; CRT.sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { IPAddress address = IPAddress.Parse(ConfigurationManager.AppSettings["LocalIP2"]); CRT.sck.Bind(new IPEndPoint(address, 0)); } catch (Exception ex) { // MessageBox.Show("无法建立连接"); Trace.WriteLine(ex.Message); return; } CRT.rep = new IPEndPoint(IPAddress.Parse(CRT.ServerIP), int.Parse(CRT.ServerPORT)); var result = CRT.sck.BeginConnect(CRT.rep, null, null); bool success = result.AsyncWaitHandle.WaitOne(CRT.timeoutMSec, true); if (success) { try { CRT.sck.EndConnect(result);//建立连接 CRT.IsConnected = true; Trace.WriteLine("成功建立连接!"); } catch { CRT.IsConnected = false; Trace.WriteLine("建立连接失败!"); } } else { CRT.sck.Close(); CRT.IsConnected = false; Trace.WriteLine("连接超时!"); } }