gpt4 book ai didi

C#包结构系统

转载 作者:可可西里 更新时间:2023-11-01 02:47:45 25 4
gpt4 key购买 nike

我正在使用数据包系统(UDP 或 TCP,任何一种都可以),但我得出的结论是我当前的 (TCP) 系统真的很棒。

基本上,我发送的数据包如下所示:

string packet = "LOGIN_AUTH;TRUE"
IPAddress target = IPAddress.Parse(endPoint);
// Send packet

当我在客户端收到数据包时,我使用它来确定数据包类型:

string[] splitPacket = packet.Split(';');

if (splitPacket[0] == "LOGIN_AUTH" && splitPacket[1] == "TRUE")
authLogin(packet); //Does stuff like loading the next screen

但我确信一定有更好的方法来做到这一点,因为这个线程:

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/79660898-aeee-4c7b-8cba-6da55767daa1/ (后 2)

我只是想知道是否有人可以给我一个正确的方向,让我知道我应该如何以一种更容易理解的方式对数据包进行分类。

提前谢谢你。

编辑:我做了一些研究,但我无法在 WCF 中找到解决我的问题的方法。那么再一次,创建数据包结构的最佳方法是什么,我该如何使用它?

我不想重新创建一个协议(protocol),就像这样:

public string sepChar = ";"
public static struct loginPacket
{
string type;
string username;
string password;
}

public void reqLogin()
{
lock (_locker) //Need to make it thread-safe in this case
{
loginPacket.type = "login";
loginPacket.username = "username";
loginPacket.password = "password;

sendPacket(loginPacket);
}
}

public void sendPacket(string packet)
{
// Script to send packet using the struct information
}

我希望已经足够详细了。

最佳答案

我会推荐 WCF;如果不是现在,决定将来学习它。它的学习曲线很长,因为它不仅涵盖您要尝试做的事情,还涵盖许多其他事情。

如果您只是想要一个快速而简单的解决方案,那么您可以使用二进制序列化。要采用这种方法,您需要在客户端和服务器之间共享的 dll 中定义消息类型。然后,记得使用 message framing 的形式这样消息就不会在传输过程中被弄乱。

当您考虑版本控制时,事情会变得更加复杂。最终您会想要使用 WCF。

关于C#包结构系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com