gpt4 book ai didi

c# - 带有 C# 套接字的字符串中的奇怪字符

转载 作者:行者123 更新时间:2023-11-30 12:33:49 24 4
gpt4 key购买 nike

我们正在使用 XNA 开发一款 RTS 游戏,我的任务是网络(好吧,我们差不多完成了游戏,我最近又把它拿回来了)。切入正题,我遇到过很多套接字问题,丢失数据包的原因主要有很多,但我想我已经解决了其中的大部分问题。 (我们甚至使用 TCP ..)

为了尝试解决问题,我创建了一个网络测试器,它将数据包发送到服务器,服务器将它们发回,之后我可以查看是否有丢包等。

我的测试之一是“变形”测试。基本上我获取随机函数,生成一个数字,将其转换为 MD5 字符串,并将其发送到服务器。当我收到它时,我将它与已经发送的字符串进行比较,看看是否有任何损坏(比较应该为 100%,因为所有发送的字符串都在接收列表中找到)。

现在,这是结果的快照:

已发送:

    [0] "69-AB-DA-CC-1A-66-6A-27-C5-B4-FF-B7-2D-9F-75-06"   string
[1] "1C-16-68-98-DF-6C-C9-16-54-5A-94-00-CA-57-77-CC" string
[2] "B6-24-7E-79-0C-66-14-5B-C0-32-F5-17-06-5D-13-87" string
[3] "1E-99-DE-1F-25-30-6E-DF-59-0D-05-2B-43-8F-07-16" string
[4] "76-82-30-13-C2-B4-33-7D-32-E2-04-C7-13-3C-F3-AB" string
[5] "23-BF-A2-F4-E4-77-78-6B-A5-2C-D2-6B-6F-B3-6F-44" string

收到:

    [0] "&\0\069-AB-DA-CC-1A-66-6A-27-C5-B4-FF-B7-2D-9F-75-06"  string
[1] "&\0\01C-16-68-98-DF-6C-C9-16-54-5A-94-00-CA-57-77-CC" string
[2] "B6-24-7E-79-0C-66-14-5B-C0-32-F5-17-06-5D-13-87" string
[3] "1E-99-DE-1F-25-30-6E-DF-59-0D-05-2B-43-8F-07-16" string
[4] "76-82-30-13-C2-B4-33-7D-32-E2-04-C7-13-3C-F3-AB" string
[5] "23-BF-A2-F4-E4-77-78-6B-A5-2C-D2-6B-6F-B3-6F-44" string

我得到大约 50% 的数据包是正确的。我可以发布套接字代码等,但我敢说它相当复杂。不过,如果需要,我会发布它。我缺少一些与套接字相关的东西吗?我希望能快速修复..但我怀疑我们之前遇到的问题是否会出现。

预先感谢您提出任何建议。

编辑:在此处查看 github 存储库:https://github.com/Wotuu/RTS_XNA_v2/tree/master/SocketLibrary

应要求,一些代码快照:MD5 创建:https://github.com/Wotuu/RTS_XNA_v2/blob/master/PathfindingTest/PathfindingTest/UI/Menus/Multiplayer/TestConnectionMenu.cs :222

字符串->字节:https://github.com/Wotuu/RTS_XNA_v2/blob/master/SocketLibrary/Packets/Packet.cs :113

字节->字符串:https://github.com/Wotuu/RTS_XNA_v2/blob/master/SocketLibrary/Packets/PacketUtil.cs

最佳答案

请记住,TCP 是一种流式传输协议(protocol)。无法保证接收套接字会收到特定大小的数据包。接收方负责将其接收到的可能随机大小的数据包重新组装成连贯的消息。

关于c# - 带有 C# 套接字的字符串中的奇怪字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378644/

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