201 /201  学年第二学期
课程设计实验报告
模块名称TCP/IP网络通信程序设计
专业
学生班级
学生学号tcpip详解 源代码
学生姓名
指导教师
QT5.6环境下的源代码
目录
题目1获取计算机的名称和IP地址 (1)
1、设计内容 (1)
2、设计分析论述及程序实现流程框图 (1)
3、关键实现代码及注解 (2)
4、程序运行测试与结果 (4)
5、程序设计中遇到的问题及改进思路 (4)
题目2基本C/S模式的通信实验 (5)
1、设计内容 (5)
2、设计分析论述及程序实现流程框图 (5)
3、关键实现代码及注解 (8)
4、程序运行测试与结果 (23)
5、程序设计中遇到的问题及改进思路 (24)
题目3简单的浏览器的实现 (26)
1、设计内容 (26)
2、设计分析论述及程序实现流程框图 (26)
3、关键实现代码及注解 (27)
4、程序运行测试与结果 (29)
5、程序设计中遇到的问题及改进思路 (30)
题目4利用smtp协议发送邮件 (31)
1、设计内容 (31)
2、设计分析论述及程序实现流程框图 (31)
3、关键实现代码及注解 (32)
4、程序运行测试与结果 (39)
5、程序设计中遇到的问题及改进思路 (39)
课程设计小节 (40)
附录 (41)
题目1获取运算机的名称和IP地址
一、设计内容
获取运算机的名称和IP地址实验
编写程序实现下述功能:
获取运算机的名称和IP地址
二、设计分析论述及程序实现流程框图
Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境(IDE),并确保第一次接触Qt框架的开发人员能迅速上手和操作。即便不开发Qt应用程序,Qt Creator也是一个简单易用且功能壮大的IDE。
Qt数据库中提供QtNetwork Module中的QHostInfo、QHostAddress、QNetworkInterface和QNetAddressEntry等类来查询网络参数。QNetworkInterface类提供了程序所运行的主机IP地址和网络接口信息的列表,在一个网络接口信息中,包括一个或多个IP地址,每一个IP地址又包括和它相关的子网掩码和广播地址。它们三者别封装在一个对象中QNetworkAddressEntry,网络接口信息也包括了硬件地址信息。[1]
3、关键实现代码及注解
1.  在NetworkI文件中,添加
QT  += network
2.  在头文件中添加如下代码:
#include <QHostInfo>
#include <QNetworkInterface>
public:
void getHostInformation();
public slots:
void slotDetail();
对QHostInfo、QNetworkInterface进行声明,添加槽函数。
3.  在源文件中添加代码。其中在构造函数的最后添加:getHostInformation();    //用于取得主机信息
connect(detailBtn,SIGNAL(clicked()),this,SLOT(slotDetail())); 4.  getHostInformation()函数用于取得主机信息。具体实现代码如下:
void NetworkInformation::getHostInformation()
{
QString localHostName = QHostInfo::localHostName();//取得本机主机名
LineEditLocalHostName->setText(localHostName);
QHostInfo hostInfo = QHostInfo::fromName(localHostName);//依照主机名取得相关主机信息,包括IP地址等。QHostInfo::fromName()函数通过主机名查IP地址信息。
QList<QHostAddress> listAddress = hostInfo.addresses();//取得主机的IP地址列表
if(!listAddress.isEmpty())//取得的主机IP地址列表可能为空。在不为空的情形下利用第一个IP地址。
{
LineEditAddress->setText(listAddress.first().toString());
}
}
注释见上。[2]
5.  slotDetail()函数取得与网络接口相关的信息,具体实现代码如下:
void NetworkInformation::slotDetail()//取得与网络接口相关的信息{
QString detail="";
QList<QNetworkInterface>
list=QNetworkInterface::allInterfaces();//QNetworkInterface类提供了一个主机IP地址和网络接口的列表
for(int i=0;i&unt();i++)
{
QNetworkInterface interface=list.at(i);
detail=detail+u8"设备:"+interface.name()+"\n";//取得网络接口的名称
detail=detail+u8"硬件地址:
"+interface.hardwareAddress()+"\n";//取得网络接口的硬件地址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。