Пример #1
0
        /// <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;
                }
            }
        }
Пример #2
0
        /// <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);
        }