写在前面的话:
本文是在Qt 5.12.2
平台上用c++
写的tcp
客户端与服务端的局域网通信,使用Qt
自带的组件设计的界面,通过信号与槽
机制实现ui界面中如QPushButton
等组件的功能。另附C#链接:C#版tcp/ip通信
.pro
中添加Qt的网络模块如下代码:QT += network
注:其中Headers
中的是.h
文件;Sources
中的是.cpp
文件;Forms
中的是ui
界面;Resources
中的是项目的 资源文件
。
.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();
.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的使用习惯,最后就使用这个版本了。
嗯 …… 今天就这些了吧,最后再说一句:
有趣的灵魂千里挑一!!!!
”