课程设计--基于qt的局域网聊天室内容摘要:
break。 金陵科技学院课程设计报告 11 case ParticipantLeft: in userName localHostName。 participantLeft(userName,localHostName,time)。 break。 case FileName: break。 case Refuse: break。 } } } 服务器端主要程序代码分析 // 开始发送数据 void TcpServer::sendMessage() //是 connect 中的槽函数 { uiserverSendBtnsetEnabled(false)。 //当在传送文件的过程中,发送按钮不可用 clientConnection = tcpServernextPendingConnection()。 //用来获取一个已连接的 TcpSocket //bytesWritten 为 qint64 类 型,即长整型 connect(clientConnection, SIGNAL(bytesWritten(qint64)), //? this, SLOT(updateClientProgress(qint64)))。 uiserverStatusLabelsetText(tr(开始传送文件 %1。 ).arg(theFileName))。 localFile = new QFile(fileName)。 //localFile 代表 的是文件内容本身 if(!localFileopen((QFile::ReadOnly))){ QMessageBox::warning(this, tr(应用程序 ), tr(无法读取文件 %1:\n%2) .arg(fileName).arg(localFileerrorString()))。 //errorString是系统自带的信息 return。 金陵科技学院课程设计报告 12 } TotalBytes = localFilesize()。 //文件总大小 //头文件中的定义 QByteArray outBlock。 QDataStream sendOut(amp。 outBlock, QIODevice::WriteOnly)。 //设置输出流属性 (QDataStream::Qt_4_7)。 //设置 Qt 版本,不同版本的数据流格式不同 ()。 // 开始计时 QString currentFile = (() //currentFile 代表所选文件的文件名 (39。 /39。 )1)。 //qint64(0)表示将 0 转换成 qint64 类型 ,与 (qint64)0 等价 //如果是,则此处为依次写入总大小信息空间,文件名大小信息空间,文件名 sendOut qint64(0) qint64(0) currentFile。 TotalBytes += ()。 //文件名大小等信息 +实际文件大小 //()为返回 io 设备的当前设置, seek(0)表示设置当前 pos 为 0 ()seek(0)。 //返回到 outBlock 的开始,执行覆盖操作 //发送总大小空间和文件名大小空间 sendOut TotalBytes qint64((() sizeof(qint64)*2))。 //qint64 bytesWritten。 bytesToWrite 表示还剩下的没发送完的数据 //clientConnectionwrite(outBlock)为套接字将内容发送出去,返回实际发送出去的字节数 bytesToWrite = TotalBytes clientConnectionwrite(outBlock)。 (0)。 //why?? } 客户端主要程序代码分析 // 创建新连接 void TcpClient::newConnect() { blockSize = 0。 tcpClientabort()。 //取消已有的连接 tcpClientconnectToHost(hostAddress, tcpPort)。 //连接到指定 ip地址和端口的主机 ()。 } 金陵科技学院课程设计报告 13 // 读取数据 void TcpClient::readMessage() { QDataStream in(tcpClient)。 //这里的 QDataStream 可以直接用 QTcpSocket 对象做参数 (QDataStream::Qt_4_7)。 float useTime = ()。 if (bytesReceived = sizeof(qint64)*2) { //说明刚开始接受数据 if ((tcpClientbytesAvailable() //bytesAvailable 为返回将要被读取的字节数 = sizeof(qint64)*2) amp。 amp。 (fileNameSize == 0)) { 金陵科技学院课程设计报告 14 五、结论 本文使用面向对象程序设计思想,设计开发 QT 聊天系统。 聊天系统要完成的任务就是提供用户操作界面,方便用户之间在局域网的环境下相互通信。 程序的核心是通过基于 TCP/IP 的 Socket 来实现消息传递的通信部分。 通过此次课程设计的锻炼,提高了我们解决实际问题的能力,让我们能更加从容地面对未来的工作。 金陵科技学院课程设计报告 15 六、参考文献 [1] 霍亚飞 .Qt 及 Qt Quick 开发实战精解 .北京航空航天大学出版社 ,2020;15512 [2] 布兰切特 (Jasmin Blanchette)等 .C++GUI Programming with Qt4[ M] .第二版 .电子工业出版社 ,2020: 22330 金陵科技学院课程设计报告 16 七、附录 关键代码: : include include include QFile include QTcpServer include QTcpSocket include QMessageBox include QFileDialog include QDebug TcpServer::TcpServer(QWidget *parent) : QDialog(parent), ui(new Ui::TcpServer) { uisetupUi(this)。 setFixedSize(350,180)。 tcpPort = 6666。 tcpServer = new QTcpServer(this)。 connect(tcpServer, SIGNAL(newConnection()), this, SLOT(sendMessage()))。 initServer()。 }。课程设计--基于qt的局域网聊天室
相关推荐
用有以下几个方面: ( 1)提高焊接产品质量。 ( 2)降低成品,提高效率。 ( 3)减轻劳动强度,保证安全 生产。 使工件处于最佳的施焊部位,焊接效率得以提升。 ( 4)准确、可靠的定位和夹紧,减小制品的尺寸偏差,提高了零件的精度和可换性。 ( 5)易于实现焊接生产机械化和自动化的综合发展。 焊接工装 夹具设计的基本要求 Ⅰ 使用目的和效果 ( 1)夹具的主要目的是为了将工件快速
1检验 方案二 1 备料 锻造毛坯 2 热处理 退火(消除内应力) 4 普车 车端面外圆柱及倒角 5 普车 车φ 45 6 普车 φ 35 7 普车 φ 30 8 数控车 9 数控铣 先钻再绞 10 数控车 退刀槽 11 数控车 车螺纹 12 数控铣 铣键槽 13 去毛刺 14 检验 综上所述:两个工艺方案的特点在于工序集中和工序分散和加工顺序,从零件本身来考虑
按钮 . (以 AB两相接地故障为例): AB 两相接地故障点三相电流: 17 AB 两相接地故障点三相电压 : 故障点各相电压: 分析: 在 A 相、 B 相发生接地短路时 ,C 相电压没有变化 ,但不为 0. 对于故障相 A 相和故障相 B 相电压 :在稳态时 ,故障点 A 相、 B 相电压由于三相短路故障发生器处于断开状态 ,因而电压不为 0. 在 0. 01s 时
时) 本节内容为 介绍 寡糖的构成及命名,寡糖和多糖的形成,常见的寡糖和多糖通过 示意图 讲解 寡糖和 多糖的形成。 目的 熟悉 寡糖 和多糖 的构成及常见的寡糖和多糖 基本要求 1. 掌握 寡糖的构成及命名 2. 了解 常见的寡糖和多糖 第 四 节 寡糖 一. 寡糖的命名 二 . 二糖: ( 1) .蔗糖 ( 2) .乳糖 ( 3) .麦芽糖 第 五 节 多糖 一. 同聚多糖 ( 1) .淀粉
,还要考虑按揭贷款比例问题。 因为按揭贷款比例越高,对借款人压力越大,在高按揭贷款比例下一旦借款人违约,银行处分抵押房产所得扣除各项支出后,有可能不足以弥补银行的支出。 加之,住房按揭贷款的期限一般较长,而按揭贷款的资金来源主要是储蓄存款和企事 业单位的短期存款,这就产生了以短期资金负担长期贷款的风险,并在一定程度上影响银行对短期资金的有效利用。 况且银行对信贷资金的市场投放及运作效率缺乏监管
/年 小批量生产 ( 1)毛坯采用铸造,精度适中,加工余量相对较大 ( 2)加工设备采用车床、铣床、钻床 ( 3)加工设备采用组合夹具 ( 4)工艺需编制详细的加工工艺过程卡片和工序卡片 ( 5)生产效率低,对人工的技术要求高 3 毛坯的确定 确定毛坯类型及其制造方法 有附表 5《常见毛坯类型》可知,材料为 HT200,可确定毛坯类型为铸件。 估算毛坯的机械加工余量 根据毛坯的最大轮廓尺寸(