关于QSocket通讯的问题~~

yingwenzifu 2014-07-23 03:37:39


问题是这样的:

1.在服务器端,将自己定义的类,直接通过QSocket写到网络;

2.在客户端,通过网络将自己定义的类读出来。


请问,应该如何实现呢,或者向哪个方向考虑可以解决这个问题?
...全文
269 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingwenzifu 2014-07-24
  • 打赏
  • 举报
回复
引用 4 楼 foxyz 的回复:
你的意思是把你类的对象序列化后传输到远端,然后接收后再把类对象deserialied 出来? 这个可以啊。定义好协议,然后在本端实现序列化函数,到远端再反序列化出来。中间的传输不是重点。关键是协议。 一般来说,远端既然要用这个类,肯定是有定义的。那么你就在这个类中实现两个函数serialized(); deserialized() 序列化函数的主要工作是把类中的属性(成员变量)值按照一定格式保存到QByteArray中。要发送的就是这个QByteArray 到远端收到这个串,再恢复回去。比如:这个类有一下几个属性:color:128,height=32,width=32.你只要序列化成串: color:128;height=32;width=32,发送过去再
对通讯的稳定性要求比较高
yingwenzifu 2014-07-24
  • 打赏
  • 举报
回复
引用 4 楼 foxyz 的回复:
你的意思是把你类的对象序列化后传输到远端,然后接收后再把类对象deserialied 出来? 这个可以啊。定义好协议,然后在本端实现序列化函数,到远端再反序列化出来。中间的传输不是重点。关键是协议。 一般来说,远端既然要用这个类,肯定是有定义的。那么你就在这个类中实现两个函数serialized(); deserialized() 序列化函数的主要工作是把类中的属性(成员变量)值按照一定格式保存到QByteArray中。要发送的就是这个QByteArray 到远端收到这个串,再恢复回去。比如:这个类有一下几个属性:color:128,height=32,width=32.你只要序列化成串: color:128;height=32;width=32,发送过去再
说的很详细,谢谢你了,数据很大的话不知道会不会有数据丢失,我先试一下效果。
besterector 2014-07-24
  • 打赏
  • 举报
回复
引用 楼主 yingwenzifu 的回复:
问题是这样的: 1.在服务器端,将自己定义的类,直接通过QSocket写到网络; 2.在客户端,通过网络将自己定义的类读出来。 请问,应该如何实现呢,或者向哪个方向考虑可以解决这个问题?
楼主 说的,应该是对象吧。 直接 发 “对象”太复杂。 我看过java类的udp包,貌似有 hash码, Qt的不知道怎么处理。 楼主为啥不尝试下 使用json 、 xml等直接发送 对象的名称和成员变量呢
donwmufromdying 2014-07-24
  • 打赏
  • 举报
回复
数据传输稳定性应该是通信来保证的。TCP网络通信一般是没啥问题的。网络传输QTcpSocket不是底层的socket,分包大小你不用考虑。不用分成固定大小,一个一个发,虽然底层实现里还是要分包
donwmufromdying 2014-07-23
  • 打赏
  • 举报
回复
你的意思是把你类的对象序列化后传输到远端,然后接收后再把类对象deserialied 出来? 这个可以啊。定义好协议,然后在本端实现序列化函数,到远端再反序列化出来。中间的传输不是重点。关键是协议。 一般来说,远端既然要用这个类,肯定是有定义的。那么你就在这个类中实现两个函数serialized(); deserialized() 序列化函数的主要工作是把类中的属性(成员变量)值按照一定格式保存到QByteArray中。要发送的就是这个QByteArray 到远端收到这个串,再恢复回去。比如:这个类有一下几个属性:color:128,height=32,width=32.你只要序列化成串: color:128;height=32;width=32,发送过去再
foruok 2014-07-23
  • 打赏
  • 举报
回复
很简单啊,服务端使用QTcpServer ,客户端 QTcpSocket 。Qt带很多这样的示例。 C:\Qt\Qt5.2.0\5.2.0\mingw48_32\examples\network\fortuneserver C:\Qt\Qt5.2.0\5.2.0\mingw48_32\examples\network\fortuneclient 研究下。 博文决赛,投我一票,谢谢。
yingwenzifu 2014-07-23
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
话说, Qt 中有 QSocket 这个类吗
写错了 是 QTcpSocket,请不要在意这些细节
foruok 2014-07-23
  • 打赏
  • 举报
回复
话说, Qt 中有 QSocket 这个类吗

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧