自己写的一个客户端程序,源码的连接http://download.csdn.net/detail/qq_28637193/9615451

界面是这样的。注意在pro文件中需要加入

QT += network

界面是直接在用设计界面设计出来的不是代码写的,所以大家模仿着做出来就行

下面是头文件mainwindow.h的内容

</pre><pre name="code" class="cpp">#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include<QTcpSocket>
#include<QTcpServer>
#include<QLabel>
namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;QTcpSocket *tcpSocket;QString message;// 用来存放数据的大小信息quint16 blockSize;//QTcpServer *tcpServer;
private slots:void newConnect();//新连接void readMessage();//读取数据void displayError(QAbstractSocket::SocketError);void sendMessage();//发送数据
};#endif // MAINWINDOW_H

下面是main.cpp

#include "mainwindow.h"
#include <QApplication>
#include<QLabel>
int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

下面是mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtNetwork>
#include<QLabel>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);tcpSocket = new QTcpSocket(this);connect(ui->pushButton_send, SIGNAL(clicked()), this, SLOT(sendMessage()));//当点击发送的时候发送数据出去connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readMessage()));//当有消息接受时会触发接收connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(displayError(QAbstractSocket::SocketError)));connect(ui->pushButton_login,SIGNAL(clicked()),this,SLOT(newConnect())); //新建一个连接}MainWindow::~MainWindow()
{delete ui;
}
void MainWindow::newConnect()
{qDebug()<<5;// 初始化数据大小信息为0blockSize = 0;// 取消已有的连接tcpSocket->abort();//终止当前的连接tcpSocket->connectToHost(ui->lineEdit_ip->text(),ui->lineEdit_duankou->text().toInt());//与服务器连接,在对话框中输入ip和端口号/*if(tcpSocket->waitForConnected(1000)){qDebug()<<"连接成功!"<<endl;ui->messageLabel->setText("成功!");}elseui->messageLabel->setText("超时");*/
}
void MainWindow::readMessage()
{qDebug()<<4;QDataStream in(tcpSocket);// 设置数据流版本,这里要和服务器端相同in.setVersion(QDataStream::Qt_4_6);// 如果是刚开始接收数据if (blockSize == 0) {//判断接收的数据是否大于两字节,也就是文件的大小信息所占的空间//如果是则保存到blockSize变量中,否则直接返回,继续接收数据if(tcpSocket->bytesAvailable() < (int)sizeof(quint16)) return;  //bytesAvailable()返回字节数in >> blockSize;}// 如果没有得到全部的数据,则返回,继续接收数据if(tcpSocket->bytesAvailable() < blockSize) return;// 将接收到的数据存放到变量中in >> message;// 显示接收到的数据*/qDebug() << message;ui->messageLabel->setText(message);if(message=="OK")ui->messageLabel->setText("注册成功!");blockSize = 0;}
void MainWindow::displayError(QAbstractSocket::SocketError)
{qDebug() << tcpSocket->errorString();}void MainWindow::sendMessage()
{QString username;username=ui->lineEdit_username->text();int lenth1=username.length();if(lenth1<10){int n=10-lenth1;for(int i=0;i<n;i++)username=username+" ";}elseusername=username.mid(0,10);qDebug()<<"姓名:"<<username<<endl;QString passward;passward=ui->lineEdit_passward->text();int lenth2=passward.length();if(lenth2<10){int m=10-lenth1;for(int i=0;i<m;i++)username=username+" ";}elsepassward=passward.mid(0,10);// 用于暂存我们要发送的数据QByteArray block;QDataStream out(&block, QIODevice::WriteOnly);// 设置数据流的版本,客户端和服务器端使用的版本要相同out.setVersion(QDataStream::Qt_4_0);out << (quint16)0;out<<tr("helloworld");out << username;out<<passward;out.device()->seek(0);out << (quint16)(block.size() - sizeof(quint16));// 发送数据成功后,显示提示tcpSocket->write(block);qDebug()<<"发送成功"<<endl;
}

qt 写的tcp客户端程序实现简单的连接接受和发送消息相关推荐

  1. Qt中的TCP客户端编程

    文章目录 1 Qt中的TCP客户端编程 1.1 TCP客户端编程介绍 1.2 QTcpSocket的同步编程 1.3 QTcpSocket的异步编程 1 Qt中的TCP客户端编程 1.1 TCP客户端 ...

  2. TCP 客户端程序开发步骤

    TCP 客户端程序开发 1. 开发 TCP 客户端程序开发步骤回顾 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2. socket 类的介绍 导入 socket ...

  3. 用QT写一个TCP通信助手(一、界面设计)

    一.新建工程 创建QT widgets工程 修改项目名称TCPAssistant,下一步下一步直到出现此界面位置 删除多余的控件,只保留如下 修改title为TCPAssistant. 二.界面设计 ...

  4. 用QT写一个TCP通信助手(三、TCP通信)

    一.说明 首先我们先分析一下: 由于不支持多继承,所以比MFC稍微麻烦了一点,但是QT又具有它自身的优势,那就是信号和槽,我们不用开线程去监听一些事件的触发,会方便许多. 二. 创建一个TCP类 这个 ...

  5. TCP 客户端程序开发

    TCP 客户端程序开发 1. 开发 TCP 客户端程序开发步骤回顾 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2. socket 类的介绍 导入 socket ...

  6. 13002.tcp客户端程序(python)

    文章目录 tcp 客户端程序 tcp 客户端程序 from socket import * import sys import structSERVER_IP="192.168.10.33& ...

  7. python socket recv超时_python使用多线程编写tcp客户端程序,你还没掌握吗?

    这篇文章主要为大家详细介绍了python使用多线程编写tcp客户端程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在网上浏览的时候发现很多关于此题目的程序都只能接收数据,所以随便找了个程序研究 ...

  8. TCP客户端程序(C语言)

    TCP客户端程序,与TCP服务器端配合使用 Visual Stdio运行 // TCP客户端.cpp : 定义控制台应用程序的入口点. // #include"stdafx.h" ...

  9. 网络编程之TCP客户端程序开发

    网络编程之TCP客户端程序开发 1. 开发 TCP 客户端程序开发步骤 2. socket 类的介绍 3. TCP 客户端程序开发示例代码 4. 小结 1. 开发 TCP 客户端程序开发步骤 创建客户 ...

  10. 计算机网络套接字编程实验-TCP单进程循环服务器程序与单进程客户端程序(简单回声)

    1.实验系列 ·Linux NAP-Linux网络应用编程系列 2.实验目的 ·理解并掌握在程序运行时从命令行读取数据的C语言编程方法: ·理解并掌握基于命令参数设置并获取IP与Port的C语言编程方 ...

最新文章

  1. Java中AudioFileStream_AudioFileStream学习
  2. php实现用户注册代码,php实现用户注册的代码示例
  3. 用matlab实现感知机学习算法,训练分类器并解决井字游戏
  4. RHEL 6.6安装桌面环境GNOME
  5. 用python挖一挖知乎上宅男们最喜欢的1000个妹子
  6. 类数据源Visual C++对ODBC数据库资源的访问
  7. hihocoder 1043 完全背包
  8. DBLE分库分表中间件
  9. IE浏览器被挟持怎么办,打不开正确网页被挟持到固定网页
  10. 基于PaddleOCR开发uni-app离线身份证识别插件
  11. 自动驾驶纯电动客车设计
  12. The bean ‘xxx‘ could not be injected as a ‘xxx‘ because it is a JDK dynamic proxy that implements:
  13. 修改docker容器中的配置文件
  14. Nexus的安装和应用
  15. MySql下载安装initialize specified but the data directory has files in it. Aborting.由于找不到VCRUNTIME140_1.d
  16. 转 -- windows7 C盘空间越来越少?完美解决方案
  17. 合肥工业大学2022大数据技术实验一
  18. DevData Talks | 张乐、茹炳晟、应阔浩、任晶磊:研发效能实践的2022年复盘和展望
  19. 使用Cookie记住多个登录账号!
  20. QuartusII_13.0安装步骤详解

热门文章

  1. matlab实现epirb调制,[单选] 根据《建筑安装工程费用项目组成》(建标[2003]206号)的规定,下列属于直接工程费中材料费的是()。...
  2. 全新的Kafka controller
  3. Hadoop Snappy安装终极教程
  4. 如何打造7*24h持续交付通道?阿里高级技术专家的5点思考
  5. 《Android进阶之光》--RxJava实现RxBus
  6. HDU 2883 kebab(最大流)
  7. eclipse debug 的断点查看和清除
  8. node-cookie- session
  9. openstack nova后端使用ceph rbd(增加在线迁移live_migrate和快照snapshot功能)
  10. 愚人节的礼物 栈