コード例 #1
0
        public bool Connect()
        {
            if (Opened)
            {
                return(true);
            }

            using (var runonce = CriticalSectionHelper.RunOnce(_connecting))
            {
                if (!runonce.Run)
                {
                    return(true);
                }

                _socket = CreateSocket();
                try
                {
                    _socket.Connect(Host, Port);
                }
                catch (Exception ex)
                {
                    TraceUtil.Error("Socket Connect error", ex);
                    NotifSender.SendNotif(Id, NetworkErrorCode, Protocol);
                    return(false);
                }

                _socketDataReceiver.Receive(_socket, DataReceivedHandler, Close);
            }

            _opened.Set();

            return(true);
        }
コード例 #2
0
ファイル: AtComand.cs プロジェクト: alwyss/TcpModemServer
 protected void SendTcpNotif(int sessionId, TcpNotifCode tcpNotif)
 {
     if (tcpNotif != TcpNotifCode.OK)
     {
         NotifSender.SendTcpNotif(sessionId, tcpNotif);
     }
 }
コード例 #3
0
 public void EndSend()
 {
     if (BytesToWrite > BytesSent)
     {
         TraceUtil.Warn("Data sent ok but more or less data are expected. Session Id: {0}, Protocol: {1}, Bytes to send: {2}, Bytes sent: {3}", Id, Protocol, BytesToWrite, BytesSent);
         NotifSender.SendNotif(Id, WaitMoreOrLessDataCode, Protocol);
     }
     //BytesSent = 0;
     //BytesToWrite = 0;
 }
コード例 #4
0
ファイル: AtComand.cs プロジェクト: alwyss/TcpModemServer
        protected IUdpSession GetUdpSession(int sessionId)
        {
            var session = SessionManager.GetSession(sessionId);

            if (session == null)
            {
                NotifSender.SendUdpNotif(sessionId, UdpNotifCode.BadSessionId);
                return(null);
            }

            return((IUdpSession)session);
        }
コード例 #5
0
        public virtual bool Send(byte[] data)
        {
            if (!Opened)
            {
                NotifSender.SendNotif(Id, NetworkErrorCode, Protocol);
                return(false);
            }

            BytesSent += data.Length;
            _socket.Send(data);

            TraceUtil.Info("Data sent to remote({0}: {1}): {2} {3}", Host, Port, data.ToHexString(0, data.Length),
                           data.InterpretAsString(0, data.Length));

            return(true);
        }
コード例 #6
0
ファイル: AtComand.cs プロジェクト: alwyss/TcpModemServer
 protected void SendNotif(int sessionId, int notifCode, DataProtocol protocol)
 {
     NotifSender.SendNotif(sessionId, notifCode, protocol);
 }