【关于QT5的问题】QTcpSocket 为什么一次只能读到8192个字节?

shenyi0106 shenyi0106 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
QTcpSocket 为什么一次只能读到8192个字节?

备注:QT板块人气太差,发了都没人回,所以才来VC板块发一下,看看有没有人搞过QT,并且知道这个问题的。


示例代码如下:

MAX_BUFFER_SIZE = 16K
struct file_head 是一个文件头结构,大小是48个字节

接收端

if (m_client->bytesAvailable() > 0)
{
QByteArray buffer = m_client->read(MAX_BUFFER_SIZE));
//这里的这个buffer总是8192,为什么?
}


发送端

int FileSender::sendFile(QString strFilePath, QString strFileName)
{
//打开文件
QFile file(strFilePath);
if (file.open(QIODevice::ReadOnly) == false)
{
return -1;
}

//分配缓冲区
struct file_head *head = (struct file_head*)malloc(MAX_BUFFER_SIZE);
if (head == NULL)
{
return -1;
}

//获得缓冲区指针
char *pdata = head->data;
int datalen = MAX_BUFFER_SIZE - sizeof(struct file_head);

//设置数据头中不变的部分
memset(head, 0, sizeof(struct file_head));
strcpy(head->filename, strFileName.toLatin1().data());
head->totallen = file.size();

//获取数据
unsigned int len = 0, offset = 0;
while ((len = file.read(pdata, datalen)) > 0)
{
head->offset = offset;
head->datalen = len;
offset += len;
write((char*)head, sizeof(struct file_head) + len);
flush();
waitForBytesWritten();
//通知进度
emit writeChanged(strFilePath, ((double)(head->offset + head->datalen) / head->totallen) * 100);
}
file.close();
free(head);

return 0;
}
...全文

相关推荐

qt中使用QTcpSocket时,如果断线了,如何重新连接

qt中使用QTcpSocket时,如果断线了,如何重连 在qt编程中,经常使用tcp socket(QTcpSocket),但是如果断网了,怎么快速重新连接呢?

lj_70596

C#从零实现FTP服务系统:协议、主动/被动模式与排错

文件传输协议(FTP)是网络环境中用于交换文件的基础协议,其核心机制在于控制连接与数据连接的分离。正确理解主动模式(PORT)与被动模式(PASV)的差异,对解决防火墙放行、响应码排错至关重要。当现成的FileZilla或vsftpd无法满足自定义登录校验、目录权限或传输监控等业务需求时,基于C#从协议层自建FTP服务便成为值得考虑的方案。本文以一个可运行的C#实现为例,拆解FTP命令交互、数据通道建立、根目录约束以及常见问题排查,并展示如何将课设代码改造为内部文件收发工具,为网络编程实践提供参考。

weixin_34354173

Qt5 局域网通信软件(模仿QQ)

采用Qt5进行开发的局域网通信客户端+Server,界面模仿QQ的界面,聊天界面采用QWidget绘制的气泡!

lynnhua_

Qt基于QTcpSocket写的ModBusTcp模块,Qt自带的modbusTCP并不能用

自带的ModbusTcp模块协议有错误,所以是没法通讯上的,这是我用QTcpsocket写的modbus协议,已在项目中使用,稳定好用

zare戏言

QT5中实现TCP协议简单通信demo

本demo实现了QT5中TCP协议简单通信,构建了一个简单的客户端和服务器之间的交互。

jamin_liu_91
评论 10
收藏 已收藏
分享
返回顶部
shenyi0106
网络编程 18,356 成员 64,161 内容