예제 #1
0
        async void  ReceiveData(TcpClient client, CancellationToken cancellationToken)
        {
            try
            {
                NetworkStream nsw           = client.GetStream();
                byte[]        receivedBytes = new byte[2048];
                int           byte_count;

                DateTime lastNWActivity = DateTime.Now;
                while (client.Connected && !cancellationToken.IsCancellationRequested)
                {
                    if (GetState(client) == TcpState.Established)
                    {
                        if ((byte_count = nsw.Read(receivedBytes, 0, receivedBytes.Length)) > 0)
                        {
                            TMainModel.readCommand(client, _UserID, receivedBytes, byte_count);
                        }
                    }
                }
                nsw.Close();
            }
            catch (SocketException sex)
            {
                if (sex.ErrorCode == 10061)
                {
                    //MessageBox.Show($"Can not connect to target machine, conenction was  refused", "Network connection problem", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    _CapStr = "Network Error: Can not connect to target machine";

                    _ActiveConnection = false;
                    _tcpclient.Dispose();
                    _ActiveConnection = false;
                    _GlobalOrderBook.Clear();
                    _TradeHistory.Clear();
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show($"{ex.Message }", "Network connection problem", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                if (!client.Connected)
                {
                    _CapStr           = $"No connection";
                    _ActiveConnection = false;
                    _tcpclient.Dispose();
                    _GlobalOrderBook.Clear();
                    _TradeHistory.Clear();
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Handle with clients
        /// </summary>
        /// <param name="cluid">ClientUID</param>
        public static void HandleClients(string cluid)
        {
            try
            {
                string    clientid = cluid;
                TcpClient Client;
                lock (_lock) Client = _DClients[clientid];

                if (_newclientDetected)
                {
                    byte[] buffer = Encoding.ASCII.GetBytes($"/CLIENTNUMBER;{clientid}");
                    TMainModel.Sendbuf2Client(Client, buffer);
                }
                while (true)
                {
                    NetworkStream stream     = Client.GetStream();
                    byte[]        buffer     = new byte[2048];
                    int           byte_count = stream.Read(buffer, 0, buffer.Length);
                    if (byte_count == 0)
                    {
                        break;
                    }

                    TMainModel.readCommand(Client, clientid, buffer, byte_count);
                }
                Console.WriteLine($"Client {Client.Client.RemoteEndPoint} was disconnected!!");
                Logger.Log.Info($"Client {Client.Client.RemoteEndPoint} was disconnected!!");
                TMainModel.RemoveClientFromDict(clientid);
                Client.Client.Shutdown(SocketShutdown.Both);
                Client.Close();
            }
            catch (Exception ex)
            {
                TMainModel.ErrorCatcher(ex, "HandleClients");
            }
        }