当前位置: 首页 > news >正文

如何做论坛网站网络工程师报名

如何做论坛网站,网络工程师报名,seo sem区别,山西做网站哪个好1.服务器: 1).功能: 用于创建一个客户端#xff0c;通过文本编辑器来获得端口号#xff0c;根据获得的端口号创建服务器#xff0c;等待客户端连接 创建成功会提示服务器创建成功 在收到客户端发送的信息时#xff0c;把这条信息发送给其他所有客户端#xff0c;实现群…1.服务器: 1).功能: 用于创建一个客户端通过文本编辑器来获得端口号根据获得的端口号创建服务器等待客户端连接 创建成功会提示服务器创建成功 在收到客户端发送的信息时把这条信息发送给其他所有客户端实现群聊功能 2).代码: ------------------------------------------------------------------- .pro ------------------------------------------------------------------- QT core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES \main.cpp \widget.cppHEADERS \widget.hFORMS \widget.ui# Default rules for deployment. qnx: target.path /tmp/$${TARGET}/bin else: unix:!android: target.path /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS target ------------------------------------------------------------------- widget.h ------------------------------------------------------------------- #ifndef WIDGET_H #define WIDGET_H#include QWidget #include QMessageBox #include QTcpServer #include QTcpSocket #include QPushButton #include QLabel #include QListWidget #include QLineEdit #include QListQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();public slots:void connectbtn_slot();void connected_slot();void readyread_slot();private:Ui::Widget *ui;//定义服务器QTcpServer *server;//定义一个链表存放连接的客户端数据QListQTcpSocket * client;}; #endif // WIDGET_H ------------------------------------------------------------------- main.cpp ------------------------------------------------------------------- #include widget.h#include QApplicationint main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } ------------------------------------------------------------------- widget.cpp ------------------------------------------------------------------- #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);//实例化服务器server new QTcpServer(this);//连接按钮与对应槽函数connect(ui-connectbtn,QPushButton::clicked,this,Widget::connectbtn_slot);}Widget::~Widget() {delete ui; }//按下按钮后启动服务器 void Widget::connectbtn_slot() {//读取端口号quint16 port ui-portedit-text().toInt();//设置为监听状态if(!server-listen(QHostAddress::Any,port)){QMessageBox::critical(this,失败,服务器启动失败);return ;}QMessageBox::information(this,成功,服务器启动成功);//连接客户端信号与槽函数connect(server,QTcpServer::newConnection,this,Widget::connected_slot); }//客户端连接槽函数 void Widget::connected_slot() {//获取客户端套接字QTcpSocket *cli server-nextPendingConnection();//将得到的套接字写入链表client.push_back(cli);//把新套接字与接收信号连接connect(cli,QTcpSocket::readyRead,this,Widget::readyread_slot);}//有信息写入准备读取 void Widget::readyread_slot() {//删除已经断开的客户端for(int i 0;i client.size();i){if(client.at(i)-state() 0){client.removeAt(i);}}//遍历发送数据的客户端for(int i 0;i client.size();i){if(client.at(i)-bytesAvailable() ! 0){//读取客户端数据QByteArray msg client.at(i)-readAll();//将数据写到ui界面中ui-listWidget-addItem(QString::fromLocal8Bit(msg));//将数据发送给所有客户端for(int j 0;j client.size();j){client.at(j)-write(msg);}}}} 2.客户端: 登陆界面 : 1).功能: 输入账号密码如果点击注册按钮会将输入的账号密码存入数据库中 且对输入的账号密码进行判断(没输入账号会提示请输入账号没输入密码会提示请输入密码)输入的账号不能重复但是密码可以重复 如果点击登录按钮会读取数据库中注册的账号密码与输入的账号密码进行对比 如果一致则提示登录成功并跳转到聊天室界面如果在数据库中找不到账号则提示账号不存在如果存在账号但是密码不正确则输出密码错误 2).代码: ------------------------------------------------------------------- .pro ------------------------------------------------------------------- QT core gui network sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES \chat.cpp \main.cpp \widget.cppHEADERS \chat.h \widget.h# Default rules for deployment. qnx: target.path /tmp/$${TARGET}/bin else: unix:!android: target.path /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS targetRESOURCES \Icon.qrcFORMS \chat.ui ------------------------------------------------------------------- widget.h ------------------------------------------------------------------- #ifndef WIDGET_H #define WIDGET_H#include QWidget#include QIcon #include QLabel #include QPushButton #include QLineEdit#include QMessageBox #include QDebug#include QSqlDatabase #include QSqlQueryclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();signals:void loginsuccess_signal(QString account);public slots:void loginbtn_slot();void signinbtn_slot();private://组件QPushButton *login_btn;QPushButton *signin_btn;QLineEdit *account_edit;QLineEdit *pwd_edit;QLabel *main_lab;QLabel *account_lab;QLabel *pwd_lab;//数据库初始化QSqlDatabase db;}; #endif // WIDGET_H ------------------------------------------------------------------- main.cpp ------------------------------------------------------------------- #include widget.h #include chat.h#include QApplicationint main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;chat c;w.show();QObject::connect(w,Widget::loginsuccess_signal,c,chat::openchatroom_slot);return a.exec(); } ------------------------------------------------------------------- widget.cpp ------------------------------------------------------------------- #include widget.hWidget::Widget(QWidget *parent): QWidget(parent) {//---------------------------------窗口设置---------------------------------//设置窗口为固定大小this-setFixedSize(540,410);//设置窗口iconthis-setWindowIcon(QIcon(:/icon/wodepeizhenshi.png));//设置窗口名this-setWindowTitle(鹏哥快聊);//---------------------------------标签设置---------------------------------//创建界面标签main_lab new QLabel(this);//修改标签大小main_lab-resize(540,200);//在标签中插入图片main_lab-setPixmap(QPixmap(:/icon/logo.png));//设置为自适应main_lab-setScaledContents(1);//创建账号标签account_lab new QLabel(this);//修改标签大小account_lab-resize(50,40);//在标签中插入图片account_lab-setPixmap(QPixmap(:/icon/userName.jpg));//移动到合适位置account_lab-move(90,220);//设置为自适应account_lab-setScaledContents(1);//创建密码标签pwd_lab new QLabel(this);//修改标签大小pwd_lab-resize(account_lab-size());//在标签中插入图片pwd_lab-setPixmap(QPixmap(:/icon/passwd.jpg));//移动到合适位置pwd_lab-move(account_lab-x(),account_lab-y()80);//设置为自适应pwd_lab-setScaledContents(1);//---------------------------------按钮设置---------------------------------//创建登录按钮login_btn new QPushButton(this);//设置按钮大小login_btn-resize(100,40);//在按钮上插入图片login_btn-setIcon(QIcon(:/icon/login.png));//在按钮上输入文本login_btn-setText(登录);//移动到合适位置login_btn-move(270,360);connect(login_btn,QPushButton::clicked,this,Widget::loginbtn_slot);//创建注册按钮signin_btn new QPushButton(this);//设置按钮大小signin_btn-resize(100,40);//在按钮上插入图片signin_btn-setIcon(QIcon(:/icon/cancel.png));//在按钮上输入文本signin_btn-setText(注册);//移动到合适位置signin_btn-move(login_btn-x()120,login_btn-y());connect(signin_btn,QPushButton::clicked,this,Widget::signinbtn_slot);//---------------------------------输入设置---------------------------------//创建账号输入account_edit new QLineEdit(this);//设置占位文本account_edit-setPlaceholderText(QQ号码/手机/邮箱);//设置大小account_edit-resize(200,40);//移动到适合位置account_edit-move(account_lab-x()100,account_lab-y());//创建密码输入pwd_edit new QLineEdit(this);//设置占位文本pwd_edit-setPlaceholderText(密码);//设置大小pwd_edit-resize(account_edit-size());//移动到合适位置pwd_edit-move(pwd_lab-x()100,pwd_lab-y());//设置回文显示模式pwd_edit-setEchoMode(QLineEdit::Password);//--------------------------------数据库设置--------------------------------//判断数据库是否存在if(!db.contains(user.db)){//不存在//创建一个数据库db QSqlDatabase::addDatabase(QSQLITE);//命名为user.dbdb.setDatabaseName(user.db);}//存在//打开数据库if(!db.open()){//打开失败QMessageBox::critical(this,error,数据库打开失败);return;}//打开成功//创建一个表//准备sql语句QString sql create table if not exists usertab(account char primary key,passwd char);//创建一个数据库指令执行者QSqlQuery commend;//执行sql语句if(!commend.exec(sql)){//创建表失败QMessageBox::critical(this,error,表格创建失败);return;}}Widget::~Widget() { }//登录按钮槽函数 void Widget::loginbtn_slot() {//获取账号和密码QString account account_edit-text();QString passwd pwd_edit-text();//从数据库中读取账号和密码QString sql select * from usertab;//创建执行者并执行sql语句QSqlQuery commend;if(!commend.exec(sql)){//查找失败QMessageBox::critical(this,error,获取注册表失败);return;}//查找成功,循环比较数据库信息与输入的信息while (commend.next()){if(commend.value(0).toString() account){//账号正确if(commend.value(1).toString() passwd){QMessageBox::information(this,success,登录成功);emit loginsuccess_signal(account);this-close();return;}//密码错误QMessageBox::critical(this,failed,登录失败,密码错误);pwd_edit-clear();return;}}//账号错误QMessageBox::critical(this,failed,登录失败,账号不存在);pwd_edit-clear(); }//注册按钮槽函数 void Widget::signinbtn_slot() {//判断是否填写完整信息if(account_edit-text() ){QMessageBox::critical(this,error,请输入账号);return;}if(pwd_edit-text() ){QMessageBox::critical(this,error,请输入密码);return;}//获取界面上的账号和密码QString account account_edit-text();QString passwd pwd_edit-text();//将注册的账号密码写入数据库中//准备sql语句QString sql QString(insert into usertab values(\%1\,\%2\)).arg(account).arg(passwd);//创建执行者并执行sql语句QSqlQuery commend;if(!commend.exec(sql)){//注册失败,账号重复QMessageBox::critical(this,error,重复注册);return;}//注册成功QMessageBox::information(this,success,注册成功); }聊天室界面: 1).功能: 进入时显示登录时的账号且发送按钮、断开按钮和发送的文本编辑器不可用 通过主机的IP和端口号进行连接至主机后给服务器发送xxx : 进入聊天室发送按钮、断开按钮和发送的文本编辑器重新可用使IP和端口号的文本编辑器以及连接聊天室按钮不可用 在发送的文本编辑器中写入信息并按下发送按钮后会整合发送信息然后发送信息给服务器发送后清空文本内容 点击断开聊天室按钮重新使发送按钮、断开按钮和发送的文本编辑器不可用使IP和端口号的文本编辑器以及连接聊天室按钮可用 并会给服务器发送一条xxx : 离开聊天室的信息 2).代码: ------------------------------------------------------------------- chat.h ------------------------------------------------------------------- #ifndef CHAT_H #define CHAT_H#include QWidget #include QTcpSocket #include QPushButton #include QLabel #include QLineEdit #include QListWidget #include QMessageBoxnamespace Ui { class chat; }class chat : public QWidget {Q_OBJECTpublic:explicit chat(QWidget *parent nullptr);~chat();public slots:void openchatroom_slot(QString account);void connectbtn_slot();void connected_slot();void readyread_slot();void sndbtn_slot();void disconbtn_slot();void disconnect_slot();private:Ui::chat *ui;//定义一个客户端套接字QTcpSocket *client;//定义一个用户名QString username;};#endif // CHAT_H ------------------------------------------------------------------- chat.cpp ------------------------------------------------------------------- #include chat.h #include ui_chat.hchat::chat(QWidget *parent) :QWidget(parent),ui(new Ui::chat) {//将用户名居中显示//ui-usernamelab_2-setAlignment(Qt::AlignCenter);ui-setupUi(this);//为客户端套接字实例化空间client new QTcpSocket(this);//连接按钮与对应槽函数连接connect(ui-connectbtn,QPushButton::clicked,this,chat::connectbtn_slot);//已连接信号与对应槽函数连接connect(client,QTcpSocket::connected,this,chat::connected_slot);//服务器发送信息信号与对应槽函数连接connect(client,QTcpSocket::readyRead,this,chat::readyread_slot);//发送按钮与对应槽函数连接connect(ui-sndbtn,QPushButton::clicked,this,chat::sndbtn_slot);//断开按钮与对应槽函数connect(ui-disconbtn,QPushButton::clicked,this,chat::disconbtn_slot);//断开连接信号与对应槽函数connect(client,QTcpSocket::disconnected,this,chat::disconnect_slot);//设置按钮与编辑框可用ui-disconbtn-setEnabled(0);ui-sndbtn-setEnabled(0);ui-msgedit-setEnabled(0); }chat::~chat() {delete ui; }void chat::openchatroom_slot(QString account) {username account;qDebug() account;qDebug() username;ui-usernamelab_2-setText(username);this-show(); }//连接按钮槽函数 void chat::connectbtn_slot() {//从ui界面读取IP与portQString IP ui-IPedit-text();quint16 port ui-portedit-text().toUInt();//连接服务器client-connectToHost(IP,port); }//已连接槽函数 void chat::connected_slot() {//连接完成提示信息QMessageBox::information(this,成功,成功进入聊天室);//发送xx进入聊天室提示给服务器QString sndmsg username : 进入聊天室;client-write(sndmsg.toLocal8Bit());//设置按钮与编辑框可用ui-IPedit-setEnabled(0);ui-portedit-setEnabled(0);ui-connectbtn-setEnabled(0);ui-sndbtn-setEnabled(1);ui-msgedit-setEnabled(1);ui-disconbtn-setEnabled(1);}//读取服务器发送信息 void chat::readyread_slot() {//读取信息QByteArray msg client-readAll();//将读取的信息发送到信息框内ui-listWidget-addItem(QString::fromLocal8Bit(msg)); }//发送按钮对应槽函数 void chat::sndbtn_slot() {//读取ui界面发送框内信息QString msg ui-msgedit-text();msg username : msg;//将数据发送给服务器client-write(msg.toLocal8Bit());ui-msgedit-clear(); }//断开连接按钮对应槽函数 void chat::disconbtn_slot() {//准备发送离开信息QString msg username : 离开聊天室;client-write(msg.toLocal8Bit());//断开连接client-disconnectFromHost(); }//断开连接信号槽函数 void chat::disconnect_slot() {QMessageBox::information(this,断开连接,成功退出聊天室);//设置按钮与编辑框可用ui-IPedit-setEnabled(1);ui-portedit-setEnabled(1);ui-connectbtn-setEnabled(1);ui-disconbtn-setEnabled(0);ui-sndbtn-setEnabled(0);ui-msgedit-setEnabled(0); }
http://www.dnsts.com.cn/news/113633.html

相关文章:

  • 设计微信小程序多少钱襄阳seo顾问
  • 西昌手机网站网站做微信支付宝支付接口
  • django做待办事项网站图片在线处理工具
  • 网站建设const是什么意思网站建设技术论文
  • 大连网站建设外贸做网站用什么技术好
  • 美妆网站建设规划青岛网站seo公司
  • 一个网站做多少关键词成都软件外包公司
  • 设计专业招聘网站无锡网站建设专业极速信息
  • 网站建设公司包括哪些做淘宝网站要求与想法
  • 淄博建设网站398做网站彩铃
  • 删除西部数码网站管理助手今天郑州最新状况
  • 网站宣传的好处百度分享wordpress插件下载
  • 上海专业网站推广公司建筑公司使命愿景价值观
  • 商城网站开发设计购物商城网站功能设计
  • 怎么样注册一个网站wordpress 无图插件
  • 宝安建网站多少钱wordpress的nginx伪静态规则
  • 南通网站公司中国设计网站排行榜前十名
  • 现在建设一个网站还能够赚钱吗上海企业信息查询公示系统
  • 网站建设毕业设计说明书word文档手机版官方网站的建设
  • 建设网站有哪些术语做网站网站要找谁
  • 锦州网站建设市场查企业企业网站有哪些
  • googl浏览器做桌面版网站郑州网约车官网
  • 浙江创新网站建设销售公司做企业网站须知
  • 网站开发的投标案例wordpress媒体库图片不加载
  • 滴答手表网站html代码下载
  • 房地产网站建设方案商城网站建设网络公司
  • 网站推广文案怎么写刚做优化的网站什么能更新
  • 网站后台更新前台更新不外国网站在中国做推广
  • 下列关于网站开发中网友上传深圳哪里做网站
  • 网站登录密码忘记了怎么办动漫网站在线免费观看