Пример #1
0
        // Public
        public void Connect(string hostname, int port)
        {
            if (mxState == NFTCPClientState.Connected)
            {
                return;
            }

            mxState = NFTCPClientState.Connecting;

            mxMessages.Clear();
            mxEvents.Clear();

            mxClient = new TcpClient();

            mxClient.BeginConnect(hostname,
                                 port,
                                 new AsyncCallback(ConnectCallback),
                                 mxClient);
        }
Пример #2
0
        // Public
        public void Connect(string hostname, int port)
        {
            if (mxState == NFTCPClientState.Connected)
            {
                return;
            }

            mxState = NFTCPClientState.Connecting;

            mxMessages.Clear();
            mxEvents.Clear();

            mxClient = new TcpClient();

            mxClient.BeginConnect(hostname,
                                  port,
                                  new AsyncCallback(ConnectCallback),
                                  mxClient);
        }
Пример #3
0
        private void ReadData()
        {
            bool endOfStream = false;

            while (!endOfStream)
            {
                int    bytesRead = 0;
                byte[] bytes     = new byte[bufferSize];
                try
                {
                    bytesRead = mxStream.Read(bytes, 0, bufferSize);
                }
                catch (Exception e)
                {
                    e.ToString();
                }

                if (bytesRead == 0)
                {
                    endOfStream = true;
                }
                else
                {
                    lock (mxEvents)
                    {
                        mxEvents.Enqueue(NFTCPEventType.DataReceived);
                    }
                    lock (mxPackets)
                    {
                        mxPackets.Enqueue(new NFSocketPacket(bytes, bytesRead));
                    }
                }
            }

            mxState = NFTCPClientState.Disconnected;

            mxClient.Close();
            lock (mxEvents)
            {
                mxEvents.Enqueue(NFTCPEventType.Disconnected);
            }
        }
Пример #4
0
        public void SetTcpClient(TcpClient tcpClient)
        {
            mxClient = tcpClient;

            if (mxClient.Connected)
            {
                mxStream = mxClient.GetStream();
                mxReader = new StreamReader(mxStream);
                mxWriter = new StreamWriter(mxStream);

                mxState = NFTCPClientState.Connected;

                mxEvents.Enqueue(NFTCPEventType.Connected);

                mxReadThread = new Thread(ReadData);
                mxReadThread.IsBackground = true;
                mxReadThread.Start();
            }
            else
            {
                mxState = NFTCPClientState.Disconnected;
            }
        }
Пример #5
0
        public void Disconnect()
        {
            mxState = NFTCPClientState.Disconnected;

            try { if (mxReader != null)
                  {
                      mxReader.Close();
                  }
            }
            catch (Exception e) { e.ToString(); }
            try { if (mxWriter != null)
                  {
                      mxWriter.Close();
                  }
            }
            catch (Exception e) { e.ToString(); }
            try { if (mxClient != null)
                  {
                      mxClient.Close();
                  }
            }
            catch (Exception e) { e.ToString(); }
        }
Пример #6
0
        public void Disconnect()
        {
            mxState = NFTCPClientState.Disconnected;

            try { if (mxReader != null) mxReader.Close(); }
            catch (Exception e) { e.ToString(); }
            try { if (mxWriter != null) mxWriter.Close(); }
            catch (Exception e) { e.ToString(); }
            try { if (mxClient != null) mxClient.Close(); }
            catch (Exception e) { e.ToString(); }
        }
Пример #7
0
        private void ReadData()
        {
            bool endOfStream = false;

            while (!endOfStream)
            {
               int bytesRead = 0;
               byte[] bytes = new byte[bufferSize];
               try
               {
                   bytesRead = mxStream.Read(bytes, 0, bufferSize);
               }
               catch (Exception e)
               {
                   e.ToString();
               }

               if (bytesRead == 0)
               {

                   endOfStream = true;

               }
               else
               {
                   lock (mxEvents)
                   {

                       mxEvents.Enqueue(NFTCPEventType.DataReceived);
                   }
                   lock (mxPackets)
                   {
                       mxPackets.Enqueue(new NFSocketPacket(bytes, bytesRead));
                   }

               }
            }

            mxState = NFTCPClientState.Disconnected;

            mxClient.Close();
            lock (mxEvents)
            {
                mxEvents.Enqueue(NFTCPEventType.Disconnected);
            }
        }
Пример #8
0
        void Init()
        {
            binListener = new NFBinaryClientListener(this);

            mxState = NFTCPClientState.Disconnected;
            mxEvents = new Queue<NFTCPEventType>();
            mxMessages = new Queue<string>();
            mxPackets = new Queue<NFSocketPacket>();
        }
Пример #9
0
        public void SetTcpClient(TcpClient tcpClient)
        {
            mxClient = tcpClient;

            if (mxClient.Connected)
            {

                mxStream = mxClient.GetStream();
                mxReader = new StreamReader(mxStream);
                mxWriter = new StreamWriter(mxStream);

                mxState = NFTCPClientState.Connected;

                mxEvents.Enqueue(NFTCPEventType.Connected);

                mxReadThread = new Thread(ReadData);
                mxReadThread.IsBackground = true;
                mxReadThread.Start();
            }
            else
            {
                mxState = NFTCPClientState.Disconnected;
            }
        }