QTsocket的接收问题,用Linux发送数组数据时,QTsocket接收错误

QTsocket的接收问题,用Linux发送数组数据时,QTsocket接收错误,第1张

接收函数内,一开始就readAll(),已经把数据都读取了,所以后面就没有可读数据了,所以后面不用判断bytesAvaliables()。

接收的时候,不要直接接收到QString中。应该先读取一个长度值(quint16),再根据长度值去读取QByteArray,再把读取到的QByteArray放到QString中。然后再判断bytesAvaliables是否还有剩余。有剩余,就再接收长度值+QByteArray。。。。

1、将字符串数组定义为全局数组2、线程A:pthread_mutex_lock(mutex)接收输入;写入数组;pthread_mutex_unlock(mutex)3、线程B:pthread_mutex_lock(mutex)显示数组内容;清空数组;pthread_mutex_unlock(mutex)

以tcp为例,服务器经socket->bind->listen->accept得到新的已连接描述符,然后使用系统函数write(int fd, const void *buf, size_t count),它的第二个参数就是要传的数据指针,当传入数组名时,实际就是数组指针

客户端通过socket ->connect->read(int fd, void *buf, size_t count),如果传输工程,客户端从fd中读出数据存入buf中,此时buf中存的就是服务器传过来的数组的值


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8313962.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存