91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

華中科技大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)源碼及實(shí)驗(yàn)報(bào)告,含socket編程實(shí)驗(yàn)、可靠數(shù)據(jù)傳輸協(xié)議實(shí)驗(yàn)、CPT組網(wǎng)實(shí)驗(yàn)共3次實(shí)驗(yàn)的工程文件,以及最后的實(shí)驗(yàn)報(bào)告。

資源截圖

代碼片段和文件信息

#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()
{
????//關(guān)閉socket
????int?ret?=?closesocket(connSock);
????if(?ret?==?SOCKET_ERROR?){
????????qDebug()<????}
}

void?connThread::recvConn()
{
????char?send_buf[1024];????????//定義接收緩沖區(qū)
????char?recv_buf[1024];????????//定義發(fā)送緩沖區(qū)
????clientIp?=?inet_ntoa(clientAddr.sin_addr);//獲取客戶端IP
????clientPort?=?ntohs(clientAddr.sin_port);//獲取客戶端端口號(hào)

????int?error?=?0;
????while(true)
????{
????????//清空緩沖區(qū)
????????memset(send_buf0sizeof?(send_buf));
????????memset(recv_buf0sizeof?(send_buf));
????????//接收數(shù)據(jù)
????????int?ret?=?recv(connSockrecv_bufsizeof?(recv_buf)0);
????????qDebug()?<????????if(ret?==?SOCKET_ERROR)
????????{
????????????//接收錯(cuò)誤,關(guān)閉連接
????????????error?=?WSAGetLastError();
????????????qDebug()?<????????????emit?finished();
????????????return;
????????}

????????if(ret?==?0)
????????{
????????????//緩沖區(qū)沒有數(shù)據(jù),關(guān)閉連接
????????????qDebug()?<????????????emit?finished();
????????????return;
????????}
????????qDebug()?<????????qDebug()<
????????recv_buf[ret]?=?‘\0‘;
????????//使用qfile發(fā)送數(shù)據(jù)
????????QString::SectionFlag?flag2?=?QString::SectionSkipEmpty;?????//忽略多余的空格的標(biāo)志
????????QString?*path?=?new?QString(recv_buf);??????????????????????//將char類型數(shù)組轉(zhuǎn)換為QString類型
????????QString?url;????????????????????????????????????????????????//http報(bào)文中的url
????????url?=?(*path).section(‘?‘?1?1?flag2);
????????QString?contentype;?????????????????????????????????????????//發(fā)送文件類型
????????contentype?=?url.section(‘.‘?1?1?flag2);

????????if(url?==?QString::fromLocal8Bit(“/“))
????????{
????????????show_index(url);????????????//如果請(qǐng)求為IP地址,顯示默認(rèn)界面
????????????continue;
????????}

????????//獲取到請(qǐng)求文件的絕對(duì)路徑
????????QString?request?=?root_path?+?url;
????????qDebug()?<
????????QFile?file(request);????????????????????????????????//使用Qfile打開文件
????????if(!file.open(QIODevice::ReadOnly?|?QIODevice::Text))
????????{
????????????qDebug()?<????????????send_404(connSock);?????????????????????????????//發(fā)送404響應(yīng)
????????????emit?open_fail(clientIp?clientPort?url);??????//打開文件失敗信號(hào)
????????}?else?{
????????????qDebug()?<????????????QByteArray?file_byte?=?file.readAll();
????????????file.close();

????????????//發(fā)送響應(yīng)
????????????if(!send_head(connSock?file_byte.length()?contentype))
????????????{
????????????????emit?send_fail(clientIp?clientPort?url);??????//發(fā)送響應(yīng)失敗信號(hào)
????????????}?else?{
????????????????if(send_file(connSock?request))????????????????//發(fā)送文件
????????????????{
????????????????????emit?send_succ(clientIp?clientPort

評(píng)論

共有 條評(píng)論

相關(guān)資源