我正在使用SDL和Net2 lib作为客户端 - 服务器应用程序。我面临的问题是我没有收到来自客户端的所有TCP数据包,除非我在从客户端发送每个数据包之前发出延迟。撤消延迟我只得到一个数据包。
答案 0 :(得分:3)
TCP连接是一个字节流。您的客户端可以发送20个包含5个字节的数据包,服务器将其作为一个100字节的序列读取。您需要自己拆分数据。
答案 1 :(得分:0)
你不能保证(在常规套接字中)一次接收所有数据包,你可能不得不多次调用你的接收函数来接收所有数据。这当然取决于您收到所有数据时“数据包”的定义吗?
+1 erik
答案 2 :(得分:0)
虽然不能保证可靠,但您很可能希望使用UDP,而不是TCP。 Net2非常好地处理UDP。 UDP实际上非常可靠。 UDP是面向消息的。 UDP消息往往很快被发送并得到路由器的特殊处理(并不总是好事:-)。 UDP通常用于游戏中。
顺便说一句,如果你在SDL邮件列表上提出这个问题,或者直接发给我,你会在几个月前得到这个建议。我写了Net2,我在SDL列表上闲逛。我不会在这里闲逛,因为这个地方是一个无限的时间沉沦。
鲍勃彭德尔顿