我正在使用SDL和Net2库作为客户端 - 服务器应用程序。我面临的问题是,我没有收到来自我的客户端的所有TCP数据包,除非在发送每个数据包之前放置一个延迟从客户端。删除延迟我只得到一个数据包。SDL Net2缺少TCP数据包
回答
TCP连接是一个字节流。您的客户端可以发送20个每个5个字节的数据包,服务器将其读取为100个字节的序列。你需要自己分开数据。
那么你不能保证(在普通插座)在同一时间接收所有数据包,您可能需要调用你的接收功能不止一次,接收所有数据。这当然取决于你对“数据包”的定义,你是否收到你的所有数据?
+1埃里克
是的,我收到我的所有数据。关于如何申报我的数据包的任何建议?我已经意识到我的数据包非常小,并且TCP在发送它们之前将它们捆绑在一起,而不是每次发送一个数据包。我在开始时使用“密钥”发送数据包,以便服务器知道如何处理每个数据包,但现在我发现这种情况正在发生,我不知道该怎么办。 – 2011-03-08 16:39:43
与您的'钥匙'一起,您可以简单地运行收到的数据并检查您的钥匙,或者在每个数据包的开头,您可以发送此消息的准确字节数。很多选项=) – ultifinitus 2011-03-08 18:08:48
虽然不能保证是可靠的,您很可能希望使用UDP,TCP没有。 Net2很好地处理UDP。 UDP实际上非常可靠。 UDP是面向消息的。 UDP消息往往会很快得到发送,并得到路由器的特殊待遇(并不总是一件好事:-)。 UDP通常用于游戏。
顺便说一句,如果你问的SDL邮件列表在这个问题上,或直接发送给我,你会在几个月前得到了这个建议。
我写了Net2,然后挂在SDL列表中。我不会在这里闲逛,因为这个地方是无限的时间。
鲍勃·彭德尔顿
- 1. 缺少SDL库?
- 2. Erlang gen_tcp缺少数据包?
- 3. SDL缺少x86_64架构
- 4. 缺少CR-TCP采样器
- 5. 缺少TCP连接重用
- 6. 缺少UDP发送数据包
- 7. 数据绑定反馈.NET2
- 8. 缺少Nuget包
- 9. 缺少JSON数据
- 10. TCP RST数据包延迟数据包
- 11. Pypi缺少Urllb2包
- 12. 包中缺少'PactFragment'au.com.dius.pact.model
- 13. 缺少TCL包smtp
- 14. 缺少android包 - API22
- 15. 缺少“DES” TCL包
- 16. MigratorDotNet缺少数据库类
- 17. 缺少数据库表 - CakePHP
- 18. Recode缺少数据Numpy
- 19. 缺少数据合并
- 20. MVC Action缺少数据
- 21. 缺少图像数据
- 22. Maven - SQLite - 缺少数据库
- 23. 在Python中缺少数据
- 24. oracle dba_identifiers缺少数据
- 25. 缺少数据更新
- 26. python缺少数据pct_change
- 27. 在Dataframe中缺少数据
- 28. NSURLConnection sendSynchronousRequest - 缺少数据
- 29. nLog缺少日志数据
- 30. 的ReportViewer缺少数据源
如你所说,它似乎我在一次接受我的所有数据我做到了。 – 2011-03-08 16:19:33
但我不希望发生这种情况,我可以禁用它吗? – 2011-03-08 16:23:44
这是TCP的工作原理。它不知道逻辑分组,它只是一系列传输的字节。 – Erik 2011-03-08 16:26:44