• 1859阅读
  • 5回复

[提问]QTcpSocket发送字节流 [复制链接]

上一主题 下一主题
离线tanyue.esec
 

只看楼主 倒序阅读 楼主  发表于: 2020-08-14
QTcpSocket的write函数,参数只有char*, QByteArray两种,如何发送流,并且在发送流结束之后,能够关闭流,从而让服务端知道本次发送已经结束了。

之前用C#和Java,都是通过一个类似OutputStream之类的类,当stream关闭后,server端就执行对应的操作,并将结果通过socket返回回来。
而在Qt中,似乎只有通过client.close的方式,才能触发server端执行对应的操作。
离线kenbe

只看该作者 1楼 发表于: 2020-08-14
没有发现有支持流发送的方式,这需求能不能拆开来一个一个包发送?
1条评分金钱+5
tanyue.esec 金钱 +5 - 2020-08-14
离线tanyue.esec

只看该作者 2楼 发表于: 2020-08-14
拆成多少个包倒是无所谓,关键是要让server端知道一次发送结束了,不再等待输入,开始下一步操作了,要不一直在循环中等待下一个输入。
离线kaon

只看该作者 3楼 发表于: 2020-08-14
定长header里把长度带上,让server自己算
1条评分金钱+5
tanyue.esec 金钱 +5 - 2020-08-15
离线clickto

只看该作者 4楼 发表于: 2020-08-14
    实际项目中的一个例子:(客户端发送)
    QDataStream writer(d->socket);
    writer.setVersion(QDataStream::Qt_5_9);
    writer<<para1<<para2;
    //......接下来要做的操作

服务器端和这一样,QDatastream接受,然后继续操作
1条评分金钱+5
tanyue.esec 金钱 +5 - 2020-08-15
离线tanyue.esec

只看该作者 5楼 发表于: 2020-08-15
唉,服务端是用C#写好的,动不了了。
快速回复
限100 字节
 
上一个 下一个