基于Qt5的 c++ Tcp/Ip通信
写在前面的话:
本文是在Qt 5.12.2
平台上用c++
写的tcp
客户端与服务端的局域网通信,使用Qt
自带的组件设计的界面,通过信号与槽
机制实现ui界面中如QPushButton
等组件的功能。另附C#链接:C#版tcp/ip通信
一、Qt中的项目的配置过程:
1.工程创建:打开Qt->新建项目->Application->Qt Widgets Application
2.在工程的.pro
中添加Qt的网络模块如下代码:
QT += network
3.ui界面中的控件布局如下:
4.最终的运行效果:
5.项目文件的结构:
注:其中Headers
中的是.h
文件;Sources
中的是.cpp
文件;Forms
中的是ui
界面;Resources
中的是项目的 资源文件
。
二、TCP server:
1.tcp服务端负责监听ip,与指定的客户端建立连接并通信.
2.在.h
中声明的函数有:
public:
void Get_ip();
bool send_msg(QString msg);
bool send_msgs(QString msg);
private slots:
//tcp server
void on_connect_pushButton_clicked();
void server_new_connection();
void ReadError(QAbstractSocket::SocketError);
void socket_Read_Data();
void socket_disconnect();
void timeUpdate();
void on_clear_pushButton_clicked();
void on_send_pushButton_clicked();
三、TCP client:
1.负责连接服务端,并与其通信。
2. 在 .h
中声明的函数有:
private slots:
void ReadData();
void C_ReadError(QAbstractSocket::SocketError);
void on_connect_server_pushButton_clicked();
void on_clear_pushButton_2_clicked();
void on_send_pushButton_2_clicked();
好了今天就写到到这了,最后附上源码的链接如下:
具体的实现过程源码及编译好的应用程序:项目源码
写在最后的话:
这个也是写了好几个版本,最开始时将Server端和Client端分开写的,有两个项目;后来又想着能不能将server和client放在一个项目中。又改了一个版本,在一个项目中封装两个类,server类和client类,通过button来切换服务端和客户端的界面。写完后又想了一下还是感觉不满意,于是又改了一个版本,server和client在一个类里边用Qt自带的组件QTabWidget实现server和client的界面切换,感觉这个版本符合app的使用习惯,最后就使用这个版本了。
嗯 …… 今天就这些了吧,最后再说一句:
有趣的灵魂千里挑一!!!!
”