这些代码是否与遥控器的行为相同:
一个:
socket.write("aaaa");
socket.waitForBytesWrite(3000);
socket.write("b");
B:
socket.write("aaaa");
socket.write("b");
我知道第一个代码会得到“aaaab”但是...... 我不知道第二个代码是否会产生“aabaa”或其他东西。
答案 0 :(得分:1)
它们是等效的(例如,远程端应该接收相同的数据顺序)。在第二种情况下,如果套接字尚未完成发送当前的数据块,则要发送的新数据将附加到内部缓冲区的末尾,以便以后写入。
当然,这假设您正在使用TCP - 如果您使用UDP,则无法保证数据包将按您发送的顺序到达。
答案 1 :(得分:1)
您使用的是什么类型的插座? TCP还是UDP?
如果使用TCP套接字:
第一行和第二行将导致“aaaab”。
如果您使用的是UDP:
处于非常糟糕状态的第一行和第二行将导致“aaaab”或“baaaa”。下面的代码更好地确保UDP数据包的序列
socket.write("aaaa");
if (socket.waitForBytesWrite(3000))
socket.write("b");