source: 2013/30/MiskaK/MW2(My Warfare 2)/ServerProtocol/Packet.cs @ 4507

Revision 4507, 2.8 KB checked in by anlakane, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.IO;
6using System.Net;
7using System.Runtime.Serialization.Formatters.Binary;
8
9namespace My_Warfare_2_Server
10{
11    /// <summary>
12    /// Lähetettävä paketti.
13    /// </summary>
14    [Serializable]
15    public class Packet
16    {
17        /// <summary>
18        /// Mitä paketin Datassa on.
19        /// </summary>
20        public PacketType Type { get; set; }
21
22        /// <summary>
23        /// Lähettäjän ID.
24        /// </summary>
25        public int SenderID { get; set; }
26
27        /// <summary>
28        /// Lähettäjän IP.
29        /// </summary>
30        public IPEndPoint SenderAddress { get; set; }
31
32        /// <summary>
33        /// Lähettäjän nimi.
34        /// </summary>
35        public String SenderName { get; set; }
36
37        /// <summary>
38        /// Itse sisältö.
39        /// </summary>
40        public Object Data { get; set; }
41
42        /// <summary>
43        /// Luodaan uusi paketti.
44        /// </summary>
45        /// <param name="type">Tyyppi.</param>
46        /// <param name="senderID">Lähettäjän ID.</param>
47        /// <param name="senderAddress">Lähettäjän IP.</param>
48        /// <param name="data">Paketin sisältö.</param>
49        public Packet(PacketType type, int senderID, IPEndPoint senderAddress, object data)
50        {
51            Type = type;
52            SenderID = senderID;
53            SenderAddress = senderAddress;
54            Data = data;
55        }
56
57        /// <summary>
58        /// Muunnetaan Packet byte-taulukoksi lähetystä varten.
59        /// </summary>
60        /// <param name="packet">Muunnettava paketti.</param>
61        /// <returns>Paketti byte-taulukkona.</returns>
62        public static byte[] ToBytes(Packet packet)
63        {
64            byte[] buffer;
65            using (MemoryStream stream = new MemoryStream())
66            {
67                BinaryFormatter formatter = new BinaryFormatter();
68                formatter.Serialize(stream, packet);
69                buffer = stream.ToArray();
70            }
71
72            return buffer;
73        }
74
75        /// <summary>
76        /// Muunnetaan Byte-taulukko takaisin Packetiksi.
77        /// </summary>
78        /// <param name="serializedPacket">Muunnettava taulukko.</param>
79        /// <returns>Taulukko pakettina.</returns>
80        public static Packet ToPacket(byte[] serializedPacket)
81        {
82            using (MemoryStream stream = new MemoryStream())
83            {
84                stream.Write(serializedPacket, 0, serializedPacket.Length);
85                stream.Position = 0;
86                BinaryFormatter formatter = new BinaryFormatter();
87
88                return (Packet)formatter.Deserialize(stream);
89            }
90        }
91    }
92}
Note: See TracBrowser for help on using the repository browser.