找回密码
 立即注册
收起左侧
楼主: yafeilinux

第37篇 网络(七)TCP(一)

80
回复
36707
查看
  [复制链接]
累计签到:1 天
连续签到:1 天
2017-2-23 09:14:05 显示全部楼层
老师,您好,按照程序的代码来实现,显示blockSize的值是24,为什么不是12字节呢?
回复 支持 反对

使用道具 举报

累计签到:769 天
连续签到:1 天
2017-2-23 15:56:49 显示全部楼层
HJUN 发表于 2017-2-23 09:14
老师,您好,按照程序的代码来实现,显示blockSize的值是24,为什么不是12字节呢? ...

//判断接收的数据是否有两字节,也就是文件的大小信息
       //如果有则保存到blockSize变量中,没有则返回,继续接收数据
       if(tcpSocket->bytesAvailable() < (int)sizeof(quint16)) return;
       in >> blockSize;


你这里是不是理解错了?
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-2-25 12:38:35 显示全部楼层
老师,我的意思是blockSize变量的值也就是文件的大小,程序执行好之后,blockSize=?多少?
回复 支持 反对

使用道具 举报

累计签到:769 天
连续签到:1 天
2017-2-25 21:40:41 显示全部楼层
HJUN 发表于 2017-2-25 12:38
老师,我的意思是blockSize变量的值也就是文件的大小,程序执行好之后,blockSize=?多少? ...

你把文件大小什么的都改变测试下,看看输出。
回复 支持 反对

使用道具 举报

累计签到:22 天
连续签到:1 天
2017-3-29 17:52:22 显示全部楼层
这里貌似hostlocal就是127.0.0.1,刚开始学QT,很多都不太懂
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-7-28 14:46:56 显示全部楼层
请问一下,能收到readyread信号,但是读值却没有,read返回-1。。。,是什么情况
回复 支持 反对

使用道具 举报

累计签到:769 天
连续签到:1 天
2017-7-28 22:38:05 显示全部楼层
十一丶半睡觉 发表于 2017-7-28 14:46
请问一下,能收到readyread信号,但是读值却没有,read返回-1。。。,是什么情况 ...

看Qt 5的教程吧,下载源码测试下。
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-7-29 16:47:27 显示全部楼层
yafeilinux 发表于 2017-7-28 22:38
看Qt 5的教程吧,下载源码测试下。

教程的例子也不可以,我用的win10 1703,Ubuntu下就可以,不知道为什么
回复 支持 反对

使用道具 举报

累计签到:769 天
连续签到:1 天
2017-7-31 23:11:33 显示全部楼层
十一丶半睡觉 发表于 2017-7-29 16:47
教程的例子也不可以,我用的win10 1703,Ubuntu下就可以,不知道为什么

也许是系统问题,这个没有在win10测试过。
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-12-18 15:55:14 显示全部楼层
请问,为什么我把tcpserver放到有公网IP的服务器上 if(!tcpServer->listen(QHostAddress("*.*.*.*."),****)),然后我用tcpClient端连接  连不上
回复 支持 反对

使用道具 举报

累计签到:769 天
连续签到:1 天
2017-12-19 23:42:04 显示全部楼层
zdy 发表于 2017-12-18 15:55
请问,为什么我把tcpserver放到有公网IP的服务器上 if(!tcpServer->listen(QHostAddress("*.*.*.*."),*** ...

请查看防火墙什么的是否进行了拦截。
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-12-20 11:58:35 显示全部楼层
新人没都豆子 怎么快速获得豆子阿
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-12-21 09:29:06 显示全部楼层
yafeilinux 发表于 2017-12-19 23:42
请查看防火墙什么的是否进行了拦截。

多谢回复,改成QHostAddress::Any,就可以了
回复 支持 反对

使用道具 举报

尚未签到

2018-10-17 14:23:03 显示全部楼层
发送hello Tcp!!!字符串的时候接受到的十六进制的是00 1C 00 00 00 18 00 68 00 65 00 6C 00 6C 00 6F 00 20 00 54 00 63 00 70 00 21 00 21 00 21 ,这个能解释一下吗?00 1C是文件大小,请问00 00 00 18在发送过程中是怎么产生的,00 68 表示的是h,请问一下这里的是两个字节表示一个字符,是为什么?
回复 支持 反对

使用道具 举报

尚未签到

2018-10-17 14:26:38 显示全部楼层
TCP(一)发送hello Tcp!!!字符串的时候接受到的十六进制的是00 1C 00 00 00 18 00 68 00 65 00 6C 00 6C 00 6F 00 20 00 54 00 63 00 70 00 21 00 21 00 21 ,这个能解释一下吗?00 1C是文件大小,请问00 00 00 18在发送过程中是怎么产生的,00 68 表示的是h,请问一下这里的是两个字节表示一个字符,是为什么?
回复 支持 反对

使用道具 举报

尚未签到

2018-10-17 14:27:39 显示全部楼层
TCP(一)发送hello Tcp!!!字符串的时候接受到的十六进制的是00 1C 00 00 00 18 00 68 00 65 00 6C 00 6C 00 6F 00 20 00 54 00 63 00 70 00 21 00 21 00 21 ,这个能解释一下吗?00 1C是文件大小,请问00 00 00 18在发送过程中是怎么产生的,00 68 表示的是h,请问一下这里的是两个字节表示一个字符,是为什么?
回复 支持 反对

使用道具 举报

累计签到:25 天
连续签到:2 天
2018-11-5 00:33:34 显示全部楼层
楼主你好,最近在学习您这个QT教程,关于TCP这一节,我有点不太明白的是,针对QDataStream类,跟QByteArray一块用的时候,在QT的帮助文档里看到的这样一段话,
D:\question.png
在使用QDataStream向一个QByteArray中写入数据时,会首先写入一个32位的整数,整数保存了QByteArray的长度,当从这个QDataStream读QByteArray的字符串是会首先读取这个字符串用有多少字节,也就是开始的那4个byte,然后再读取字符串。那您为什么还用再特意添加一个qint16大小的空间来用于后面放置文件的大小信息,读取的时候直接读一个qint32的数字不就可以了吗?
回复 支持 反对

使用道具 举报

尚未签到

2019-1-28 18:34:15 显示全部楼层
你好,为什么我用网络调试助手,怎么打不开服务端
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册