资源简介
华中科技大学计算机学院计算机网络实验源码及实验报告,含socket编程实验、可靠数据传输协议实验、CPT组网实验共3次实验的工程文件,以及最后的实验报告。
代码片段和文件信息
#include “connThread.h“
connThread::connThread(Qobject *parent) : Qobject(parent)
{
}
connThread::connThread(SOCKET connSocksockaddr_in clientAddrQString root_path)
{
//初始化
this->connSock = connSock;
this->clientAddr = clientAddr;
this->root_path = root_path;
this->clientIp = nullptr;
}
connThread::~connThread()
{
//关闭socket
int ret = closesocket(connSock);
if( ret == SOCKET_ERROR ){
qDebug()<< “关闭成功“;
}
}
void connThread::recvConn()
{
char send_buf[1024]; //定义接收缓冲区
char recv_buf[1024]; //定义发送缓冲区
clientIp = inet_ntoa(clientAddr.sin_addr);//获取客户端IP
clientPort = ntohs(clientAddr.sin_port);//获取客户端端口号
int error = 0;
while(true)
{
//清空缓冲区
memset(send_buf0sizeof (send_buf));
memset(recv_buf0sizeof (send_buf));
//接收数据
int ret = recv(connSockrecv_bufsizeof (recv_buf)0);
qDebug() << recv_buf;
if(ret == SOCKET_ERROR)
{
//接收错误,关闭连接
error = WSAGetLastError();
qDebug() << “recv error:“< emit finished();
return;
}
if(ret == 0)
{
//缓冲区没有数据,关闭连接
qDebug() << “recvnum: 0“;
emit finished();
return;
}
qDebug() << “recvByte:“ << ret;
qDebug()<
recv_buf[ret] = ‘\0‘;
//使用qfile发送数据
QString::SectionFlag flag2 = QString::SectionSkipEmpty; //忽略多余的空格的标志
QString *path = new QString(recv_buf); //将char类型数组转换为QString类型
QString url; //http报文中的url
url = (*path).section(‘ ‘ 1 1 flag2);
QString contentype; //发送文件类型
contentype = url.section(‘.‘ 1 1 flag2);
if(url == QString::fromLocal8Bit(“/“))
{
show_index(url); //如果请求为IP地址,显示默认界面
continue;
}
//获取到请求文件的绝对路径
QString request = root_path + url;
qDebug() << request;
QFile file(request); //使用Qfile打开文件
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << “打开文件失败“;
send_404(connSock); //发送404响应
emit open_fail(clientIp clientPort url); //打开文件失败信号
} else {
qDebug() << “打开文件成功“;
QByteArray file_byte = file.readAll();
file.close();
//发送响应
if(!send_head(connSock file_byte.length() contentype))
{
emit send_fail(clientIp clientPort url); //发送响应失败信号
} else {
if(send_file(connSock request)) //发送文件
{
emit send_succ(clientIp clientPort
- 上一篇:模电数电multisim仿真文件250个.zip
- 下一篇:人机交互结课作业.rar
相关资源
- 模电数电multisim仿真文件250个.zip
- 校园管理系统源码.
- 东北大学web开发程序设计实践实验报
- 最新CANFestival源码+stm32测试代码+移植
- 医院管理住院系统的研究与实现(源
- 畅购商城完整代码实现源码
- 利用OpenGL自编程实现球体源码——网
- 小米mace相关源码
- AR人脸库,自己做过实验很好用
- LPC1768库函数实验(lpcopen2.1版本))
- 计网实验.zip
- 红外与可见光图像融合实验素材
- CloudCompare源码
- 基于DCT算法视频压缩内含实验报告和
- 北邮计算机大三实验报告全
- lis3dh三轴传感器计步实现C源码
- pentaho kettle solutions电子书及完整源码
- Halcon16种缺陷检测视源码.7z
- Opencv+VS米粒图像处理实验源代码
- 厦门理工学院计算机网络PPT
- 计算机网络 第五版 Computer Networks (
- 计算机网络自顶向下方法 课后全套资
- 个人发卡网源码全解.zip
- 智能社JS视频配套源码
- ArcGis Engine组件式开发及应用 兰小机
- 立方体线框模型透视投影 计算机图形
- echarts.zip
- UniGUI_1.90.0.1508整套汉化包源码版
- 最全 LINQ从基础到项目实战(电子书
- LINUX设备驱动程序(第3版)_含.zip
评论
共有 条评论