TCP链接分为2部分,分别为服务器端和客户端
服务器端:
tcpServer=new QTcpServer(this);//初始化 tcpServer->listen(QHostAddress::LocalHost,8888) // 8888端口号 设置监听 connect(tcpServer,SIGNAL(newConnection()),this,SLOT(readMessage())); // newConnection() 每当有新的链接来到 就会触发该信号 // 执行槽函数 在函数中会设置嵌套字 用于锁定链接来源
void tcpserver::readMessage()
{
tcpSocket=tcpServer->nextPendingConnection(); //获取已经建立的连接的套接字
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));
}
多链接的话 tcpSocket 设置成tcpSocket[ num] 就行
在read_client_data()槽函数中
执行 client = (QTcpSocket*)this->sender();
判断发来消息得客户端就行。
tcpSocket 服务器端用于接受数据,每当socket 有数据来了 就触发readyRead()信号
socket->read() socket->readAll() 等函数 用于读数据
建立连接的套接字服务器端可以直接使用tcpSocket向客户段写书据
tcpSocket->write() 等函数
客服端口:
tcpSocket->abort(); //清除原有链接 tcpSocket->connectToHost("127.0.0.1",8888); //链接目标地址及端口号 tcpSocket->waitForConnected(1); //等待链接 tcpSocket->write(data); //写书据 connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data())); //也可以直接读数据