internal void DataIn(object clientData) { BaseClientData client = (BaseClientData)clientData; var clientStream = client.ClientStream; try { while (true) { byte[] buffer; //Daten byte[] dataSize = new byte[4]; //Länge int readBytes = clientStream.Read(dataSize, 0, 4); while (readBytes != 4) { readBytes += clientStream.Read(dataSize, readBytes, 4 - readBytes); } var contentLength = BitConverter.ToInt32(dataSize, 0); buffer = new byte[contentLength]; readBytes = 0; while (readBytes != buffer.Length) { readBytes += clientStream.Read(buffer, readBytes, buffer.Length - readBytes); } //Daten sind im Buffer-Array Router.DistributePackage(BasePackage.Deserialize <BasePackage>(buffer), client.TcpClient); } } catch (IOException e) { Log.Debug(e.ToString()); BaseClientData disconnectedClient = GetClientFromClientList(client.TcpClient); Log.Info("Client disconnected with Uid: " + disconnectedClient.Uid); Clients.Remove(disconnectedClient); Log.Info("Client removed from list."); OnClientDisconnected(new ClientDisconnectedEventArgs(disconnectedClient.Uid)); } }
public ClientConnectedEventArgs(BaseClientData client) { Client = client; }