public void StopListening()
 {
     if (_server == null)
     {
         return;
     }
     _server.StopListening();
     _server = null;
 }
 public void StartListening(int port)
 {
     Task.Factory.StartNew(() =>
     {
         _server = new SynchronousSocket();
         _server.SocketConnected += _server_SocketConnected;
         _localListenPort         = port;
         _server.StartListening(LocalIP, port);
     });
 }
示例#3
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);
        }
        //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);
        }