QT从主界面开始连接socket,怎么在其他界面利用这个连接发信息给服务器?
你只要保证这个Socket的生存周期足够在别的界面里面使用他就好了,主界面建立好连接,设置对了IP端口等等的,在别的地方直接调用对象调用write()函数就行了(不知道你用的是TCP还是UDP,具体的函数有点区别但大致差不多)
首先回答第一个问题,读和写可以有多种实现方式,用write和read只是其中一种,前面一个函数中的 clientConnection->write(block)是调用了QTcpSocket 类中的write方法来实现,如果你想不用此方法调用类中的read和write方法,就是你问的第二个问题,in和out的作用,in和out在这里将对socket中的报文收发变为数据流的形式来操作,QDataStream in(tcpSocket)比如这一句是将tcpSocket这个连接的实例对象作为一个文件描述符传递给QDataStream,然后 in >> blockSize这句话实现的就是相当于read的操作,就是将数据流读出来。这个 out << (quint16)(blocksize() - sizeof(quint16))是写入。实际上对诸如串口收发,读写文件,socket通信等等,用C语言来写,抽象出来都是对文件描述符进行操作,都可以用write和read来做,所以,实际上,第一种方法和第二种方法是一样的,就看你选择什么样的方法了,第三个问题可参考out << (quint16)(blocksize() - sizeof(quint16))这样的方法在收到数据以后把数据发出去。
请给分。。。
如果文件不大,应该以字节流的形式加载文件到内存,然后多线程同时读取,相当于批量上传前,单线程加载弄个进度条。
多线程读取文件的时候你可以给文件加锁,如果有锁sleep1没有锁就执行业务代码然后释放锁。
qt应用程序开发框架,一个1991年由QtCompany开发的跨平台C加加图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展以及一些宏,Qt很容易扩展,并且允许真正地组件编程。
各位大侠们,由于对QT不熟悉,所以请大侠们多多指教
我现在服务端是C# ,发送了 转换为二进制流,已字节的形式发送,
------解决方案--------------------------------------------------------
假设你的二进制流放在char buffer[]里FILE fp;fp = fopen(testjpeg, wb);
if(fp != NULL){size_t ret = fwrite(buffer, sizeof(char), size, fp);
fclose(fp);}
------解决方案--------------------------------------------------------
只要严格按照发送协议和标准格式重新组合就可以了
------解决方案--------------------------------------------------------
流就是流,就是一串0101的数据,你传递的,就是这样的数据,不要把它理解成或者声音或者视频,它仅仅是01而已,关键点是,当你把这些01读到客户端的一个buffer中后(一楼的应该用unsigned char buffer[]吧),如何保存这些数据,你把这些数据写进一个jpeg文件,它就是一张,你把它写进一个txt文件,它就是一堆乱码
------解决方案--------------------------------------------------------
可能是您的BUFFER太小
------解决方案--------------------------------------------------------
QT中的也和你给的QT设备有关系的吧
------解决方案--------------------------------------------------------
全部弄完拼接起来,有带宽限制的 不可能一下子发送完毕吧
所谓细水长流~
哎呀 洒家又扯淡了。
0条评论