private void sendNetworkIDs() { if (!serverSideNetworkIDsAssigned) { throw new InvalidOperationException( "This PacketManagers ID's are not assigned so it cannot send networkIDs"); } MemoryStream memStrm = new MemoryStream(); BinaryWriter bw = new BinaryWriter(memStrm); bw.Write((int)1); bw.Write((byte)InternalPacketType.NetworkIDsReply); bw.Write(transporterNetworkIDMap.Length); bw.Write(packetTransporters.Count); for (int i = 0; i < packetTransporters.Count; i++) { if (packetTransporters[i].NetworkID == -1) { continue; } bw.Write(packetTransporters[i].NetworkID); bw.Write(packetTransporters[i].UniqueName); } //TODO: need encryption here? tcpConnection.SendPacket(memStrm.ToArray(), TCPPacketBuilder.TCPPacketFlags.None); }
public void SendData(int type, object data) { byte[] bytes = null; if (data != null) { BinaryFormatter binaryFormatter = new BinaryFormatter(); using (MemoryStream stream = new MemoryStream()) { binaryFormatter.Serialize(stream, data); bytes = stream.ToArray(); } } using (Packet packet = new Packet(type)) { if (bytes != null) { packet.SetBytes(bytes); } packet.WriteLength(); ClientTCP.SendPacket(packet); } }
public void TestTCPConnect() { bool success = false; AutoResetEvent testDone = new AutoResetEvent(false); TCPConnectionListener listener = new TCPConnectionListener(5013); listener.Listening = true; TCPConnection client1 = null; listener.ClientConnected += delegate(object sender, TCPConnectionListener.ClientConnectedEventArgs e) { Console.WriteLine("Client connected to server!"); TCPConnection serverClient1 = new TCPConnection(e.CL); serverClient1.SendPacket(new byte[] { 1, 2, 3, 4 }, TCPPacketBuilder.TCPPacketFlags.None); serverClient1.Receiving = true; serverClient1.PacketRecievedAsync += delegate(object sender2, BaseConnection.PacketRecievedEventArgs e2) { for (int i = 1; i < 4 + 1; i++) { if (e2.Dgram[i - 1] != i) { success = false; // optional testDone.Set(); return; } } Console.WriteLine("Packet received from client!"); success = true; testDone.Set(); }; }; client1 = new TCPConnection(); client1.ConnectedToServer += delegate(object sender, TCPConnection.ConnectedToServerEventArgs e) { Console.WriteLine("Connected successfully!"); client1.Receiving = true; }; client1.ConnectError += delegate(object sender, TCPConnection.ConnectErrorEventArgs e) { throw e.Ex; }; client1.PacketRecievedAsync += delegate(object sender, BaseConnection.PacketRecievedEventArgs e) { for (int i = 1; i < 4 + 1; i++) { if (e.Dgram[i - 1] != i) { success = false; // optional testDone.Set(); return; } } Console.WriteLine("Packet received from server!"); client1.SendPacket(new byte[] { 1, 2, 3, 4 }, TCPPacketBuilder.TCPPacketFlags.None); }; client1.Connect(System.Net.IPAddress.Parse("127.0.0.1"), 5013); //testDone.WaitOne(5000); testDone.WaitOne(); Assert.True(success); }