Repository navigation
Expand file tree
/
Copy pathPacketData.cs
More file actions
135 lines (105 loc) · 2.65 KB
/
Copy pathPacketData.cs
File metadata and controls
135 lines (105 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using MemoryPack; //https://github.com/neuecc/MemoryPack
using System;
using System.Collections.Generic;
namespace CSBaseLib;
public class PacketDef
{
public const Int16 HeaderSize = 5;
public const int MaxUserIDByteLength = 16;
public const int MaxUserPWByteLength = 16;
public const int InvalidRoomNumber = -1;
}
public class PacketToBytes
{
public static byte[] Make(PacketId packetID, byte[] bodyData)
{
byte type = 0;
var pktID = (Int16)packetID;
Int16 bodyDataSize = 0;
if (bodyData != null)
{
bodyDataSize = (Int16)bodyData.Length;
}
var packetSize = (Int16)(bodyDataSize + PacketDef.HeaderSize);
var dataSource = new byte[packetSize];
Buffer.BlockCopy(BitConverter.GetBytes(packetSize), 0, dataSource, 0, 2);
Buffer.BlockCopy(BitConverter.GetBytes(pktID), 0, dataSource, 2, 2);
dataSource[4] = type;
if (bodyData != null)
{
Buffer.BlockCopy(bodyData, 0, dataSource, 5, bodyDataSize);
}
return dataSource;
}
public static Tuple<int, byte[]> ClientReceiveData(int recvLength, byte[] recvData)
{
var packetSize = BitConverter.ToInt16(recvData, 0);
var packetID = BitConverter.ToInt16(recvData, 2);
var bodySize = packetSize - PacketDef.HeaderSize;
var packetBody = new byte[bodySize];
Buffer.BlockCopy(recvData, PacketDef.HeaderSize, packetBody, 0, bodySize);
return new Tuple<int, byte[]>(packetID, packetBody);
}
}
// 로그인 요청
[MemoryPackable]
public partial class PKTReqLogin
{
public string UserID;
public string AuthToken;
}
[MemoryPackable]
public partial class PKTResLogin
{
public short Result;
}
[MemoryPackable]
public partial class PKNtfMustClose
{
public short Result;
}
[MemoryPackable]
public partial class PKTReqRoomEnter
{
public int RoomNumber;
}
[MemoryPackable]
public partial class PKTResRoomEnter
{
public short Result;
}
[MemoryPackable]
public partial class PKTNtfRoomUserList
{
public List<string> UserIDList = new List<string>();
}
[MemoryPackable]
public partial class PKTNtfRoomNewUser
{
public string UserID;
}
[MemoryPackable]
public partial class PKTReqRoomLeave
{
}
[MemoryPackable]
public partial class PKTResRoomLeave
{
public short Result;
}
[MemoryPackable]
public partial class PKTNtfRoomLeaveUser
{
public string UserID;
}
[MemoryPackable]
public partial class PKTReqRoomChat
{
public string ChatMessage;
}
[MemoryPackable]
public partial class PKTNtfRoomChat
{
public string UserID;
public string ChatMessage;
}