public Server() { this._settings = new Settings(); this._items = new Items(); this.clients = new ClientList(ref this._settings, ref this._items); this._listener = new Listener(ref this._settings, ref this.clients); this.iu = new InterfaceUpdater(ref this._settings, ref this._listener, ref this.clients, ref _items); this._items.Bind(ref this.clients); }
public InterfaceUpdater(ref Settings _settings, ref Listener _listener, ref ClientList clients, ref Items auctionItems) { this.runnig = false; this.updateing = false; this._settings = _settings; this._listener = _listener; this.clients = clients; this.auctionItems = auctionItems; this.task = new Thread(new ThreadStart(Task)); this.task.Name = THREAD_NAME; Console.Title = CONSOLE_TITLE + " - " + this._settings.ServerIP; }
public Listener(ref Settings _settings, ref ClientList _clientList) { this.runnig = false; this.closed = false; this.idConter = 0; this._clientList = _clientList; // Socket setup this._socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this._socket.Bind(_settings.ServerIP); this._socket.Listen(_settings.ServerQueueSize); // Worker thread setup this._task = new Thread(new ThreadStart(Task)); this._task.IsBackground = false; this._task.Name = THREAD_NAME; }
/// <summary> /// Прослушивание входящих соединений /// </summary> private void ListeningIncomingConnetions() { TcpClient incomingConnection; while (!listenToken.Token.IsCancellationRequested) { Thread.Sleep(50); if (!tcpListener.Pending()) { continue; // Попытка соединения } incomingConnection = tcpListener.AcceptTcpClient(); string clientName = ReceiveMessage(incomingConnection); // Получаем имя клиента и добавляем его в список ConnectedClient client = new ConnectedClient(incomingConnection, clientName, new CancellationTokenSource()); dispatcher.BeginInvoke(new Action(() => ClientList.Add(client))); Task.Run(() => ClientMessaging(client)); AddToLog(this, $"{client.Login} successful connected"); } }
public void Bind(ref ClientList clients) { this.clients = clients; }