繁体   English   中英

使用其他设备但不在本地计算机上时,C#TCP数据包丢失

C# TCP packets lost when using different devices but not on local machine

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

发送数据的客户端代码:

public void SendPointsUpdate(string teamName, int points, bool isHidden)
    {
        if (isDebug)
            return;

        var packet = new PointsUpdatePacket(teamName, points, isHidden);

        var serializedPacket = JsonConvert.SerializeObject(packet);
        var buff = Encoding.ASCII.GetBytes(serializedPacket);
        client.GetStream().Write(buff, 0, buff.Length);
    }

客户端是TcpClient

和服务器在哪里收到:

while (true)
                {

                    if (client.Connected)
                    {
                        try
                        {
                            if (!client.GetStream().DataAvailable)
                                continue;

                            var buffer = new byte[client.ReceiveBufferSize];
                            client.GetStream().Read(buffer, 0, buffer.Length);

                            var reader = new JsonTextReader(new StringReader(Encoding.ASCII.GetString(buffer)));
                            reader.SupportMultipleContent = true;

                            var packetList = new List<Packet>();
                            try
                            {
                                while (true)
                                {
                                    if (!reader.Read())
                                    {
                                        break;
                                    }

                                    JsonSerializer serializer = new JsonSerializer();
                                    Packet _packet = serializer.Deserialize<Packet>(reader);

                                    packetList.Add(_packet);
                                }

                                foreach (var packet in packetList)
                                {
                                    //var packet = JsonConvert.DeserializeObject<Packet>(Encoding.ASCII.GetString(buffer));

                                    switch (packet.PacketId)
                                    {
                                     //Do stuff
                                    }
                                }
                             }

客户端是TcpClient

现在,当它在我的本地PC(客户端和服务器)上运行时,一切运行正常。 当我使用其他设备时,某些数据包会丢失并且无法执行。 客户端设备一直处于活动状态,并且正在将数据包发送到服务器。 这就是从客户端到服务器的数据传输方式的99%。 我不明白为什么数据包根本没有传送。

问题暂未有回复.您可以查看右边的相关问题.
2 在本地计算机上使用多播时丢失消息

我编写了一个Java程序,该程序能够通过多播地址发送/接收消息。 我的多播发件人代码: 我的多播接收器代码: 我的程序有4个并行线程,用于侦听和接收来自四个不同的多播地址(224.0.0。[1-&gt; 4])和端口[66601-&gt; 66604]的消息。 在测试中,我同 ...

7 scapy仅嗅探我计算机上的数据包并过滤所需的http数据包

我正在研究一个项目,在该项目中,我嗅探通过网络的http数据包,但是scapy仅嗅探发送到我的计算机或广播的数据包。 我看到嗅探函数有一个名为iface的参数- sniff(iface= ? ) 但是,我找不到在线文档或解释。 如果我要嗅探整个网络而不是仅嗅探我的计算机,有人 ...

8 C ++ dll在计算机上启动,但不在另一台计算机上

我已经写了一个c ++ dll,目标是在另一个进程中注入它,他在我的计算机上运行良好,我想在第二台计算机上尝试它,但是当我注入它时,什么也没发生。 因此,我已经使用“空” dll进行了测试,其中仅带有一个消息框,用于向我显示注入该dll的时间,该dll在我的第一台计算机上工作,但再次在我的第二 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM