写入特定字节C#

bie*_*000 2 c# sockets byte

嘿我写简单的应用程序,这是两个玩家可以互相聊天,基本上玩.

我的应用可以根据收到的数据类型执行不同的操作.

例如,如果玩家1向玩家2发送消息,则玩家2的客户端上的应用程序识别出它是消息类型,并且激发更新GUI的合适事件.

另一方面,如果玩家1进行移动,则玩家2的客户端应用程序识别出它是移动类型并且做适当的事件.

所以它是数据的缓冲区

Byte[] buffer = new Byte[1024]; 
Run Code Online (Sandbox Code Playgroud)

有可能写入buffer[0]数据类型(1 - MSG,2 - MV),其余数据写入其余字节吗?或者是否有更好的方法来实现这个功能?

Jer*_*gen 5

您可以使用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)