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

肖港网站开发做网站练手

肖港网站开发,做网站练手,多语种网站制作,现代企业网站建设特点tcp编程中写的一个简单的单项传输数据的小例子#xff0c;和上一节一样#xff0c;分为客户端和服务端程序#xff0c;下面看一下界面的效果。 创建的方法和之前一样#xff0c;上面上代码#xff1a; 客户端 Client.h #ifndef CLIENT_H #define CLIENT_H#include …tcp编程中写的一个简单的单项传输数据的小例子和上一节一样分为客户端和服务端程序下面看一下界面的效果。 创建的方法和之前一样上面上代码 客户端 Client.h #ifndef CLIENT_H #define CLIENT_H#include QDialog #include QAbstractSocketQT_BEGIN_NAMESPACE namespace Ui { class Client; } QT_END_NAMESPACE class QTcpSocket; class Client : public QDialog {Q_OBJECTpublic:Client(QWidget *parent nullptr);~Client();private slots:void displayTip();void errorTip(QAbstractSocket::SocketError);void on_sendButton_clicked();void on_connectButton_clicked(bool checked);void on_textEdit_cursorPositionChanged();private:Ui::Client *ui;QTcpSocket *tcpClient;qint8 flag; }; #endif // CLIENT_HClient.cpp #include client.h #include ui_client.h #include QtNetwork #include QMessageBox #include QDebug /*问题描述 1 再次输入要发送的文本时上次发送成功的提示依旧存在 2 断开连接后上次发送成功的提示依旧存在*/ Client::Client(QWidget *parent): QDialog(parent), ui(new Ui::Client),flag(0) {ui-setupUi(this);setWindowTitle(tr(客户端));tcpClient new QTcpSocket(this);connect(tcpClient,QTcpSocket::connected,this,Client::displayTip);void (QTcpSocket:: *errorSign)(QAbstractSocket::SocketError) QTcpSocket::error;connect(tcpClient,errorSign,this,Client::errorTip);ui-connectButton-setText(tr(连接));ui-statusLabel-setText(tr(未连接));ui-tipLabel-setText(tr( ));ui-sendButton-setEnabled(false); }Client::~Client() {delete ui; }void Client::displayTip() {ui-statusLabel-setText(tr(连接成功));ui-sendButton-setEnabled(true); }void Client::errorTip(QAbstractSocket::SocketError) {qDebug()发生错误tcpClient-errorString();tcpClient-abort();ui-statusLabel-setText(tr(连接已断开));ui-tipLabel-setText(tr( ));ui-connectButton-setText(tr(连接));flag 1;// qDebug()flag 1; }void Client::on_sendButton_clicked() {QString str ui-textEdit-toPlainText();QByteArray text str.toUtf8();//返回一个字符串的utf-8形式可以表示所有字符 // QByteArray text str.toLatin1();//只能输出英文和数字即拉丁文,汉字会被代替 // QByteArray text str.toLocal8Bit();//只能输出英文和数字汉字会被乱码qint64 bytes tcpClient-write(text);if(bytes 0){ // qDebug()发送成功;ui-textEdit-clear();ui-tipLabel-setText(tr(数据发送成功!));} }void Client::on_connectButton_clicked(bool checked) {if(ui-IPLineEdit-text().isEmpty() || ui-portLineEdit-text().isEmpty()){QMessageBox::information(this,tr(警告),tr(请查看主机名或端口是否已输入));return ;}if(checked || flag 1){ui-connectButton-setText(tr(断开连接));ui-statusLabel-setText(tr(连接中......));ui-tipLabel-setText(tr( ));tcpClient-connectToHost(ui-IPLineEdit-text(),ui-portLineEdit-text().toInt());}else{ui-connectButton-setText(tr(连接));ui-statusLabel-setText(tr(未连接));ui-tipLabel-setText(tr( )); // tcpClient-disconnectFromHost();//等待所有数据传输完成后关闭套接字 // tcpClient-close();//不会立即关闭套接字tcpClient-abort();//立即关闭套接字} }void Client::on_textEdit_cursorPositionChanged() {ui-tipLabel-setText(tr( )); }服务端的程序 Server.h #ifndef SERVER_H #define SERVER_H#include QDialog #include QAbstractSocketQT_BEGIN_NAMESPACE namespace Ui { class Server; } QT_END_NAMESPACEclass QTcpServer; class QTcpSocket;class Server : public QDialog {Q_OBJECTpublic:Server(QWidget *parent nullptr);~Server();private slots:void dataDisplayTip();void recevieData();void dealData();void errorTip(QAbstractSocket::SocketError);void on_listenButton_clicked();void on_disconnectButton_clicked();private:Ui::Server *ui;QTcpServer * myServer;QTcpSocket *socketConnected; }; #endif // SERVER_HServer.cpp #include server.h #include ui_server.h #include QtNetwork #include QTimer #include QDebug/*问题描述 1 客户端单一方面断开与服务器的连接时服务器不应该显示为连接异常 2 服务器在与客户端连接的过程中可以选择单方面断开与客户端的连接 3 客户端发送中文时服务端显示乱码*/Server::Server(QWidget *parent): QDialog(parent), ui(new Ui::Server) {ui-setupUi(this);myServer new QTcpServer(this);connect(myServer,QTcpServer::newConnection,this,Server::recevieData); // connect(myServer,QTcpServer::connected,this,Server::tipInfo);ui-statusLabel-setText(tr(未建立连接));ui-RecevieDataLabel-setText(tr( ));}Server::~Server() {delete ui; }void Server::dataDisplayTip() {ui-RecevieDataLabel-setText(tr( )); }void Server::recevieData() {ui-statusLabel-setText(tr(连接成功));socketConnected myServer-nextPendingConnection();connect(socketConnected,QTcpSocket::readyRead,this,Server::dealData);void (QTcpSocket:: *errorSign)(QAbstractSocket::SocketError) QTcpSocket::error;connect(socketConnected,errorSign,this,Server::errorTip);myServer-close(); }void Server::dealData() {if(socketConnected-bytesAvailable()0){QString str socketConnected-readAll();//QByteArray dataui-textEdit-append(str);ui-RecevieDataLabel-setText(tr(消息接收完成));QTimer *timer new QTimer(this);connect(timer,SIGNAL(timeout()),this,SLOT(dataDisplayTip()));timer-start(2000);} }void Server::errorTip(QAbstractSocket::SocketError) {qDebug()socketConnected-errorString();ui-listenButton-setEnabled(true);socketConnected-close();myServer-close();ui-statusLabel-setText(tr(连接中断));ui-RecevieDataLabel-setText(tr( )); }void Server::on_listenButton_clicked() {if(!myServer-listen(QHostAddress::LocalHost,6787)){qDebug()监听失败;ui-statusLabel-setText(tr(监听失败));myServer-close();}ui-statusLabel-setText(tr(监听成功));ui-RecevieDataLabel-setText(tr( ));ui-listenButton-setEnabled(false); }void Server::on_disconnectButton_clicked() {ui-statusLabel-setText(tr(连接中断));ui-RecevieDataLabel-setText(tr( ));ui-listenButton-setEnabled(true);socketConnected-disconnectFromHost();myServer-close(); }先运行服务端程序点击监听按钮再运行客户端程序输入IP和端口同样程序之间实现的是本地地址通信端口6787主机名或ip都可以点击连接若主机名和IP没有填写直接点击连接会弹出提示窗口提示查看IP和端口的填写情况对话框下面会显示连接状态连接成功后输入要发送的内容点击发送按钮可以发送信息会有相应的发送和接收数据成功与否的显示。 效果图如下 该注意的点 在数据传输的过程中编码格式的一致否则会导致乱码代码中含有我对与一些函数的理解加以记录以备后用。
http://www.zqtcl.cn/news/38388/

相关文章:

  • 做什么网站开发好中企动力总部在哪
  • 手机网站建设视频教程郑州网站建设 郑州网站设计
  • 在一个空间建两个网站wordpress extended rss
  • 做自媒体的素材网站python做的网站多吗
  • 做平行进口的汽车网站注册网站的软件
  • 厦门 网站 开发企业网站建设数据现状分析
  • vs做的网站项目可以改名字吗陕西交通建设集团公司网站
  • 手机网站头部图片怎么做西宁做网站君博示范
  • 网站改版公告一键做网站
  • 成都医院网站建设用dw做的网站怎么上传图片
  • dede网站地图htmlwordpress段落缩进
  • 0基础学做网站教程门户网站都有哪些
  • 化妆品网站建设实训总结重庆市建设政务中心网站
  • 重庆网站制作定制网站建设收获
  • 云南住房和城乡建设厅网站首页郑州发布会最新消息
  • seo织梦网站建设步骤ppt成品免费下载
  • 网站制作叫什么嘉兴专业定制网站制作企业
  • 建设网站费用预算宿迁房价2022最新房价
  • 网站开发工具 枫子科技上海好公司排名前十
  • 做影视网站难吗客户网站分析
  • 网站建设证有网站对服务器要求
  • 网站广告源码中国最厉害的公关人
  • 网站长春网站建设如何找人做网站
  • 网站建设一般做什么啥叫优化
  • 海宁市网站建设连云港网站建设培训班
  • 手机网站你们网站商城前台模板
  • 网站开发从零到永久3e38cos跳转
  • 如何建设一个彩票网站广州网站建设 中网科技
  • 怎么学网站设计wordpress 彻底加速
  • 做网站需要注意的地方做天猫网站多少钱