void Tcp_PacketReceived(byte packetType, Networking.BinaryWrapper reader, System.Net.IPEndPoint endPoint) { textBox2.Text += "(DEBUG: Client: Received TCP " + packetType.ToString() + ")" + Environment.NewLine; if (packetType == Networking.ClientPacketTypeBase.ConnectionAck) { client.Tcp.NetStreamBinary.Write(Networking.PacketTypeBase.EndOfMessage); } else if (packetType == MyClientPackets.ClientChat) { var player = client.Players[reader.ReadInt()]; textBox2.Text += player.Name + ": " + Networking.StringWriter.Read(reader) + Environment.NewLine; } else if (packetType == Networking.ClientPacketTypeBase.PlayerData) { foreach (var p in client.Players) { if (listBox1.Items.Count <= p.Index) { listBox1.Items.Add(""); } if (!p.Active) { listBox1.Items[p.Index] = "(Disconnected)"; } else { listBox1.Items[p.Index] = p.Name; } } } }
public static string Read(BinaryWrapper reader) { string str = string.Empty; int length = reader.ReadInt(); for (int i = 0; i < length; ++i) { str += reader.ReadChar(); } return(str); }
public void Check() { if (!CheckConnect()) { Disconnect(); return; } while (Tcp.NetStream.DataAvailable) { var reader = new BinaryWrapper(Tcp.NetStream); while (true) { byte packetType = reader.ReadByte(); if (packetType == PacketTypeBase.EndOfMessage) { break; } else if (packetType == ServerPacketTypeBase.ConnectionAck) { Active = true; int port = reader.ReadInt(); Udp.EndPoint = new IPEndPoint(((IPEndPoint)Tcp.Client.Client.RemoteEndPoint).Address, port); string playerName = StringWriter.Read(reader); Name = playerName; } else if (packetType == ServerPacketTypeBase.Disconnected) { Disconnect(); } Tcp.OnPacketReceived(packetType, reader, (IPEndPoint)Tcp.Client.Client.RemoteEndPoint); Server.OnReceiveTCPData(packetType, reader, this); } } if (Tcp.BatchStream.BaseStream.Length != 0) { Tcp.NetStreamBinary.Write(Tcp.Memory.ToArray(), 0, (int)Tcp.Memory.Length); Tcp.Memory.SetLength(0); } }
public static string Read(BinaryWrapper reader) { string str = string.Empty; int length = reader.ReadInt(); for (int i = 0; i < length; ++i) str += reader.ReadChar(); return str; }
public void Check() { if (!Connected) { if (_client.ConnectionState == ConnectionState.Connecting && (DateTime.Now - ConnectionTime).Seconds > 4) { _client.ConnectionState = ConnectionState.Timeout; } return; } while (Client.Available != 0) { var reader = new BinaryWrapper(NetStream); while (true) { byte packetType = reader.ReadByte(); if (packetType == PacketTypeBase.EndOfMessage) { break; } else if (packetType == ClientPacketTypeBase.SpawnAck) { int count = reader.ReadInt(); _client.Players.SetPlayers(count); _client.PlayerIndex = reader.ReadInt(); _client.Players[_client.PlayerIndex].Name = _client.Name; _client.Spawned(); } else if (packetType == ClientPacketTypeBase.ConnectionAck) { _client.Connected(); } else if (packetType == ClientPacketTypeBase.PlayerData) { int index = reader.ReadByte(); byte bits = reader.ReadByte(); var player = _client.GetPlayer(index); if ((bits & ClientPacketTypeBase.PlayerDataBits.ActiveBit) != 0) { player.Active = reader.ReadBoolean(); } if ((bits & ClientPacketTypeBase.PlayerDataBits.NameBit) != 0) { player.Name = StringWriter.Read(reader); } if (player.Active == false) { _client.Players.Remove(player); } _client.OnPlayerDataReceived(player, reader); } OnPacketReceived(packetType, reader, (IPEndPoint)Client.Client.RemoteEndPoint); } } if (BatchStream.BaseStream.Length != 0) { NetStreamBinary.Write(_memory.ToArray(), 0, (int)_memory.Length); _memory.SetLength(0); } }