コード例 #1
0
ファイル: Security.cs プロジェクト: dawnoble/blackcatproject
 internal void Send(Packet packet)
 {
     lock (_lockObject)
     {
         _packetToSendList.Add(packet);
     }
 }
コード例 #2
0
ファイル: Security.cs プロジェクト: dawnoble/blackcatproject
 internal void Recv(Packet packet)
 {
     lock (_lockObject)
     {
         _packetToRecvList.Add(packet);
     }
 }
コード例 #3
0
 private void StartSend(Packet packet)
 {
     try
     {
         ASCIIEncoding encoder = new ASCIIEncoding();
         string msg = encoder.GetString(packet.Buffer, 0, packet.Size);
         _connectionSocket.BeginSend(packet.Buffer, 0, packet.Size, SocketFlags.None, new AsyncCallback(SendCallbackHandle), this);
     }
     catch (SocketException)
     {
         Disconnect();
     }
     catch (Exception exception)
     {
         Console.WriteLine(exception.ToString());
     }
 }
コード例 #4
0
        private void RecvCallbackHandle(IAsyncResult result)
        {
            try
            {
                byte[] buffer = result.AsyncState as byte[];
                int numRecv = _connectionSocket.EndReceive(result);
                List<Packet> incomingList = new List<Packet>();

                lock (_lockObject)
                {
                    Packet packet = new Packet(buffer, numRecv);
                    _mySecurity.Recv(packet);
                    while (_mySecurity.HasPacketToRecv())
                    {
                        incomingList.Insert(0, _mySecurity.GetPacketToRecv());
                    }
                }

                foreach (Packet packet in incomingList)
                {
                    OnPacket(packet);
                }

                StartRecv();
            }
            catch (SocketException)
            {
                Disconnect();
            }
            catch (NullReferenceException)
            {

            }
            catch (ObjectDisposedException)
            {

            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
            }
        }
コード例 #5
0
        private void OnPacket(Packet packet)
        {
            ASCIIEncoding encoder = new ASCIIEncoding();
            if (_connectionType.Equals(ConnectionTypes.ServerType))
            {
                string msg = encoder.GetString(packet.Buffer, 0, packet.Size);
                if ("pingping".Equals(msg))
                {
                    packet.Buffer = encoder.GetBytes(msg + msg);
                    packet.Size = packet.Buffer.Length;
                }
            }
            else if (_connectionType.Equals(ConnectionTypes.ClientType))
            {

                string msg = encoder.GetString(packet.Buffer, 0, packet.Size);
                if (!"ping".Equals(msg))
                {
                    if (msg.Contains("."))
                    {
                        _ip = msg;
                        packet.Buffer = encoder.GetBytes("127.0.0.1");
                        packet.Size = packet.Buffer.Length;
                    }
                    else
                    {
                        _port = Convert.ToInt32(msg);
                        packet.Buffer = encoder.GetBytes(_agentProxyEndPoint.Port.ToString());
                        packet.Size = packet.Buffer.Length;
                    }

                    if (!_ip.Equals(String.Empty) && _port != 0)
                    {
                        IPEndPoint ep = new IPEndPoint(IPAddress.Parse(_ip), _port);
                        lock (_myProxy)
                        {
                            _myProxy.AcceptAgentConnection(ep);
                        }
                        _ip = String.Empty;
                        _port = 0;
                    }
                }
                else
                {
                    packet.Buffer = encoder.GetBytes(msg + msg);
                    packet.Size = packet.Buffer.Length;
                }

            }

            if (_relayConnection != null)
            {
                lock (_relayConnection)
                {
                    _relayConnection.SendPacket(packet);
                }
            }
            else
            {
                Disconnect();
            }
        }
コード例 #6
0
 internal void SendPacket(Packet packet)
 {
     lock (_lockObject)
     {
         _mySecurity.Send(packet);
     }
 }