private void AcceptCallback(IAsyncResult ar) { Socket serverSocket = (Socket)ar.AsyncState; if (serverSocket != null) { try { Socket clientSocket = serverSocket.EndAccept(ar); if (clientSocket != null) { TCPConnection connection = new TCPConnection(clientSocket); this.CallClientConnected(connection); connection.Disconnected += CallClientDisconnected; connection.PacketReceived += CallPacketReceived; connection.StartListen(); } serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), serverSocket); } catch (Exception) { } } }
private void CallPacketReceived(TCPConnection connection, CPacket packet) { if (this.OnPacketReceived != null) this.OnPacketReceived(connection, packet); }
void CommunicationServer_OnPacketReceived(TCPConnection connection, CPacket packet) { byte packetType = packet.GetByte(); if(packetType == PacketType.JOIN_REQUEST) { CPacket response = new CPacket(PacketType.JOIN_RESPONSE); response.AddBool(true); connection.SendPacket(response); Thread.Sleep(100); CPacket response2 = new CPacket(PacketType.VOLUME_CONTROL); response2.AddByte((byte)this.Volume); connection.SendPacket(response2); Thread.Sleep(100); CPacket response3 = new CPacket(PacketType.STREAM_LIST); response3.AddByte((byte)this.StreamManager.Streams.Count); foreach(RadioStream stream in this.StreamManager.Streams) { response3.AddString(stream.Name); } connection.SendPacket(response3); } else if(packetType == PacketType.VOLUME_CONTROL) { byte volume = packet.GetByte(); this.Volume = volume; } else if(packetType == PacketType.PLAY_STREAM) { string streamName = packet.GetString(); foreach (RadioStream stream in this.StreamManager.Streams) if (streamName.Equals(stream.Name)) this.StreamPlayer.Play(stream.Address); } }
private void CallClientConnected(TCPConnection connection) { this.connections.Add(connection); if (this.OnClientConnected != null) this.OnClientConnected(this, connection); }
void CommunicationServer_OnClientConnected(object sender, TCPConnection e) { }