我想使用以太网从 Qt 应用程序发送文件。当我单击按钮时,必须传输文件。所以我的问题是: 问:需要什么配置,因为 IP 和网络掩码在我使用的设备中是固定的:AM335x:Linux OS:Qt 应用程序
我是 TCP/IP 新手,告诉我如何进行;从以太网我可以将 Qt 应用程序可执行文件从 PC 下载到我的设备(AM335x)并且运行良好。但我想将文件从 Am335x 设备发送到其他设备或 PC。
问候普拉文
基本上你想要使用的是 Qt Network 模块。你可以在这里阅读:
http://qt-project.org/doc/qt-5.0/qtnetwork/qtnetwork-programming.htm l
并在此处找到课程列表:
http://qt-project.org/doc/qt-5.0/qtnetwork/qtnetwork-module.html
非常简单地说,可以用于 TCP 通信的两个主要类是 QTcpServer 和 QTcpSocket。您可以设置服务器来监听连接,它会返回一个 QTcpSocket 来进行实际的通信。您可以使用 QTcpSocket 进行任何传出通信。
如果您不想使用 TCP,则可以使用数据报(更简单,但最终可靠性较低)。这里 QUdpSocket 是要使用的主要类,用于发送和接收(您需要将套接字绑定到机器上的端口才能接收)。
编写一个自定义程序来基于这些类进行简单的文件传输是相当容易的,但是您也可以查看专门用于处理文件的更高级别的协议。
为了与连接另一端的 FTP 服务器进行简单交互,您可以使用 QFtp 类。此处是 FTP 客户端应用程序的一个示例。在 Qt 中编写 FTP 服务器会更加复杂,但是您可以在这里查看:https ://code.google.com/p/qt-ftp-server/ 。
当然,所有这些都假设以太网连接已正确设置并且您的计算机具有有效的 IP 地址。请记住,以太网是一种链路层协议,它构成了更高级别的 IP 和 TCP 协议的原始基础。更高级别协议的想法是它们可以在整个互联网的各种链路层上使用。编写一个直接与链路层协议交互的程序是非常不寻常的(当然,除非您正在为操作系统编写网络堆栈)。
在大多数网络上,IP 地址/网络掩码等的配置由运行在其中一台设备上的 DHCP 服务器处理,最常见的是在连接一切的路由器上(如果您已经运行 DHCP,那么您可能不必担心)。如果没有 DHCP,您通常可以在大多数设备上配置静态地址和网络掩码。选择它们是一个相当简单的过程。这个页面对这些概念有相当好的介绍。