本篇为基于QT下的Socket编程,其首要部分为QT基础,不懂的可以返回我主页查看 “ QT分栏 ” 的相关文章,其次为Socket编程和TCP通信,可查看文章 “ TCP传输控制协议 ” 和“ Socket编程基础 ”进行食用。
本篇QT的编程环境为Ubuntu-20.04,在Windows下也可以直接运行,这里笔者再提一下ubuntu与windows文件传输的问题,俩者可设立共享文件夹,实现不同系统下文件共享,详细操作可移步 “ 实现虚拟机下“ Linux与Windows 共享文件夹 ” 。
本项目最终实现:客户端在接口处输入服务器IP地址与端口号(Ubuntu下输入ifconfig查看ip信息),连接成功后双方会在界面处显示“客户端/服务器 连接成功”,然后双方就可以在发送区输入数据进行通信,根据接收到的不同数据 进行不同操作。
tcpserver=new QTcpServer(this);//指定父对象 回收空间
tcpserver->listen(QHostAddress::Any,8080);//绑定当前网卡所有的ip 绑定端口 也就是设置服务器地址和端口号
connect(tcpserver,&QTcpServer::newConnection,[=](){};
tcpsocket=tcpserver->nextPendingConnection();
QString ip=tcpsocket->peerAddress().toString();//获取连接的 ip地址
quint16 port=tcpsocket->peerPort();//获取连接的 端口号
QString temp=QString("[%1:%2] 客服端连接成功").arg(ip).arg(port);
ui->textEditRead->setText(temp); //显示连接成功
connect(tcpsocket,&QTcpSocket::readyRead,[=](){ QString str=tcpsocket->readAll(); //从通信套接字中取出内容});
//获取编辑区域的内容QString str=ui->textEditWrite->toPlainText();//写入通信套接字 协议栈自动发送tcpsocket->write(str.toUtf8().data());
//通信套接字主动与服务端断开连接tcpsocket->disconnectFromHost();//结束聊天//关闭 通信套接字tcpsocket->close();tcpsocket=nullptr;
}
tcpsocket=new QTcpSocket(this);
QString IP=ui->lineEditIP->text();quint16 Port=ui->lineEditPort->text().toInt();
tcpsocket->connectToHost(IP,Port);
connect(tcpsocket,&QTcpSocket::connected,[=](){ui->textEditRead->setText("服务器连接成功!");});
QString str=ui->textEditWrite->toPlainText();//将信息写入到通信套接字tcpsocket->write(str.toUtf8().data());
connect(tcpsocket,&QTcpSocket::readyRead,[=](){QString str=tcpsocket->readAll();};
tcpsocket->disconnectFromHost();//断开与服务器的连接tcpsocket->close();//关闭通信套接字
server 0 0 665 675 Server font: 16pt "Adobe Arabic"; 280 20 101 41 服务器 100 70 521 241 font: 12pt "Adobe Arabic"; 50 116 31 31 接 50 160 31 41 收 50 210 31 31 框 100 340 521 241 font: 12pt "Adobe Arabic"; 50 386 31 31 发 50 430 31 41 送 50 480 31 31 框 160 610 111 41 发送 410 610 111 41 关闭
client 0 0 665 675 Client font: 14pt "Adobe Arabic"; 50 30 171 41 服务器 IP 地址: 100 90 101 31 端口号: 230 30 191 31 192.168.229.1 230 90 191 31 8888 462 50 121 51 连接 80 150 551 201 font: 12pt "Adobe Arabic"; 80 370 551 211 font: 12pt "Adobe Arabic"; 30 186 31 31 接 30 226 31 31 收 30 270 31 31 框 30 410 31 31 发 30 456 31 31 送 30 500 31 31 框 150 610 110 40 发送 400 610 101 41 关闭
若需程序源码可在评论区留言QQ邮箱或直接私信即可
上一篇:虚拟机识别
下一篇:Spring核心思想