//private int GetRemoteListenPort(System.Net.Sockets.Socket socket)
        //{
        //    try
        //    {
        //        byte[] portBytes = new byte[16];
        //        int byteRec = socket.Receive(portBytes, 16, SocketFlags.None);
        //        string portStr = Encoding.Unicode.GetString(portBytes, 0, 16).TrimEnd('\0');
        //        int port = int.Parse(portStr);
        //        return port;
        //    }
        //    catch (SocketException se)
        //    {
        //        _logger.Error(string.Format("获取远端监听端口信息时发生套接字异常!SocketException ErrorCode:{0}", se.ErrorCode));
        //        return -1;
        //    }
        //    catch (Exception e)
        //    {
        //        _logger.Error(string.Format("获取远端监听端口信息时发生异常!异常信息:{0}", e.Message));
        //        return -1;
        //    }
        //}

        private Socket TryConnectRemote(IPEndPoint remote)
        {
            _client = new SynchronousSocket();
            int    connectedCount = 1;
            Socket socket         = _client.StartConnecting(remote);

            _logger.Info(string.Format("第{0}次向远端{1}:{2}发起连接{3}!", connectedCount, remote.Address, remote.Port, socket == null ? "失败" : "成功"));
            //连接远端不成功时,再尝试
            while (socket == null && connectedCount < CONNECTED_MAXCOUNT)
            {
                Thread.Sleep(500);
                socket = _client.StartConnecting(remote);
                connectedCount++;
                _logger.Info(string.Format("第{0}次向远端{1}:{2}发起连接{3}!", connectedCount, remote.Address, remote.Port, socket == null ? "失败" : "成功"));
            }
            return(socket);
        }
Exemplo n.º 2
0
        private bool TryConnectRemote(IPEndPoint remote)
        {
            var synchronousSocket = new SynchronousSocket();

            _client = synchronousSocket.StartConnecting(remote);
            if (_client == null)
            {
                string logMsg = string.Format("{0}向远端{1}发起连接失败!", this.GetType().ToString(), remote);
                _logger.Warn(logMsg);
                LogHelper.Instance.ErrorLogger.Add(new DbHelper.Entitys.ErrorLogEntity(DateTime.Now, "WARN", logMsg));
                logMsg.RefreshUINotifyText();
                return(false);
            }
            return(true);
        }