/// <summary> /// Connections the forwarding thread. /// </summary> /// <param name="from">From.</param> /// <param name="to">To.</param> private void ConnForwardingThread(int from, int to) { byte[] recv_buf = new byte[256]; int bytes_recv, bytes_send; while (true) { bytes_recv = MobileDevice.recv(from, recv_buf, 256, 0); if (bytes_recv == -1) { //string errorMsg = new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error()).Message;//Winsock错误获取 int errorno = Marshal.GetLastWin32Error(); if (errorno == 10035) //10035 Socket无数据报错,可能函数原型为异步非阻塞,这里作为阻塞式调用而导致异常,可以忽略 { continue; } MobileDevice.closesocket(from); MobileDevice.closesocket(to); break; } bytes_send = MobileDevice.send(to, recv_buf, bytes_recv, 0); if (bytes_recv == 0 || bytes_recv == -1 || bytes_send == 0 || bytes_send == -1) { MobileDevice.closesocket(from); MobileDevice.closesocket(to); break; } } }
/// <summary> /// 停止Socket服务 /// </summary> /// <param name="inSocket"></param> /// <returns></returns> private bool StopSocketService(ref int socket) { kAMDError kAMDSuccess = kAMDError.kAMDSuccess; if (socket > 0) { try { kAMDSuccess = (kAMDError)MobileDevice.closesocket(socket); } catch (Exception ex) { return(false); } } socket = 0; return(kAMDSuccess != kAMDError.kAMDSuccess); }