嘿我写简单的应用程序,这是两个玩家可以互相聊天,基本上玩.
我的应用可以根据收到的数据类型执行不同的操作.
例如,如果玩家1向玩家2发送消息,则玩家2的客户端上的应用程序识别出它是消息类型,并且激发更新GUI的合适事件.
另一方面,如果玩家1进行移动,则玩家2的客户端应用程序识别出它是移动类型并且做适当的事件.
所以它是数据的缓冲区
Byte[] buffer = new Byte[1024];
Run Code Online (Sandbox Code Playgroud)
有可能写入buffer[0]数据类型(1 - MSG,2 - MV),其余数据写入其余字节吗?或者是否有更好的方法来实现这个功能?
您可以使用BinaryReader/Writer.
例如:
发件人:
Byte[] buffer = new Byte[1024];
MemoryStream stream = new MemoryStream(buffer);
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(1); // message type. (command)
writer.Write("Hi there");
writer.Write(3.1415);
Run Code Online (Sandbox Code Playgroud)
使用它stream.Position来确定写入的数据的长度.
接收器:
Byte[] buffer = new Byte[1024];
MemoryStream stream = new MemoryStream(buffer);
BinaryReader reader = new BinaryReader(stream);
int command = reader.ReadInt32();
switch(command)
{
case 1: // chat message
string message = reader.ReadString();
double whateverValue = reader.ReadDouble();
break;
case 2: // etc.
break;
}
Run Code Online (Sandbox Code Playgroud)