如何用Qt的Qudpsocket传输图片文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Qt的Qudpsocket传输图片文件?相关的知识,希望对你有一定的参考价值。

下位机通过udp发送广播包给上位机接收(给定udp playload格式,并且不考虑用TCP传输),发送的主要是图片(2M大小以上),qt的udp可以传输字符数据,能传输大文件吗?问题是:接收端该怎么写才能接收到下位机发送的图片并能保存在本地?

参考技术A 主要是你通过socket api封装要发送的数据,内部会自动封装成数据流进行传输。
1,什么是Socket
网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。
但是,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。
2,Socket通讯的过程
Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client 端都可以通过Send,Write等方法与对方通信。
对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤:
  (1) 创建Socket;
  (2) 打开连接到Socket的输入/出流;
  (3) 按照一定的协议对Socket进行读/写操作;
  (4) 关闭Socket.(在实际应用中,并未使用到显示的close,虽然很多文章都推荐如此,不过在我的程序中,可能因为程序本身比较简单,要求不高,所以并未造成什么影响。)
3,创建Socket
创建Socket
java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。这是两个封装得非常好的类,使用很方便。其构造方法如下:
Socket(InetAddress address, int port);
Socket(InetAddress address, int port, boolean stream);
Socket(String host, int prot);
Socket(String host, int prot, boolean stream);
Socket(SocketImpl impl)
Socket(String host, int port, InetAddress localAddr, int localPort)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
ServerSocket(int port);
ServerSocket(int port, int backlog);
ServerSocket(int port, int backlog, InetAddress bindAddr)

Socket client = new Socket("127.0.01.", 80);
ServerSocket server = new ServerSocket(80);

  在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出例外。

以上是关于如何用Qt的Qudpsocket传输图片文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何用QT实现在图片上叠加显示文字

QT下UDP套接字通信——QUdpSocket 简单使用

使用 QUdpSocket 的 Qt4 DNS 服务器

Qt4 DNS 代理 QUdpSocket

新手如何用QT做一个“动漫宠物“?进来学!!!!

如何用PHP输出图片的宽度和高度?