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

我们正在使用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

byte-> String:https://github.com/Wotuu/RTS_XNA_v2/blob/master/SocketLibrary/Packets/PacketUtil.cs

最佳答案 请记住,TCP是一种流媒体协议.无法保证接收套接字将接收特定大小的数据包.接收方负责将其接收的可能随机大小的分组重新组合成连贯的消息.

点赞