第一个验证:创建TCP服务器
要求:
1、能够监听指定端口的 数据信息;
2、能够检测到有新的客户端建立连接;
3、能够检测到客户端的断开;
4、能够检测到接收到的客户端的数据;
5、能够发送数据到指定的客户端;
测试开始:
1、头文件
#include <QTcpSocket>
#include <QTcpServer>
2、初始化服务器
mytcpServer = new QTcpServer();
3、连接客户端
connect(mytcpServer, SIGNAL(mytcpServer->newConnection()), this, SLOT(this->newClient()));
4、启动监听
mytcpServer->listen(QHostAddress::Any, port);
调试中发现,有如下提示:
看了QTcpServer头文件,里面是包含有newConnection()这个信号量的。该怎么处理呢?
把mytcpServer->删掉就可以了了,这里是相同的问题this->newClient(),删掉this->
5、接收数据和发送数据
//可以实现同时读取多个客户端发送过来的消息
QTcpSocket *obj = (QTcpSocket*)sender();
QString msg = obj->readAll();
//qDebug()<<msg;
ui->receiveTextEdit->append(msg);
obj->write("567");
6、断开网络的IP地址
void MainWindow::clientDisconnected()
{
QTcpSocket *obj = (QTcpSocket*)sender();//掉线对象
//qDebug()<<obj->peerAddress().toString();//打印出掉线对象的ip
ui->receiveTextEdit->append(obj->peerAddress().toString());
}
tcpSocket->abort(); //这条命令可以y用来断开网络连接
7、获取链接到本server的客户端的IP地址及端口号
tcpSocket->peerAddress().toString(); //获取的IP如:“::ffff:192.168.1.130”这样的格式
tcpSocket->peerPort(); //获取客户端的端口号
tcpSocket->peerAddress().toIPv4Address(); //获取IPV4格式的IP地址3232235906。(就是上面的192.168.1.130)