客户端程序做的很简单
界面操作
TcpClient::TcpClient(QWidget *parent) :QDialog(parent),ui(new Ui::TcpClient)
{
ui->setupUi(this);
connect(ui->pushButton,SIGNAL(pressed()),this,SLOT(connectToServer()));
connect(ui->pushButton_2,SIGNAL(pressed()),this,SLOT(closeConnection()));
connect(&tcpSocket,SIGNAL(connected()),this,SLOT(sendRequest()));
connect(&tcpSocket,SIGNAL(disconnected()),this,SLOT(connectionClosedByServer()));
connect(&tcpSocket,SIGNAL(readyRead()),this,SLOT(update()));
connect(&tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error()));
nextBlockSize=0;
}
实现按button1连接服务器 发送请求并最终返回缓冲区的内容
发送请求:
void TcpClient::sendRequest(){
QString in="123";
QByteArray block;
QDataStream out(&block,QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_7);
out<<quint16(0)<<in;
out.device()->seek(0);
out<<quint16(block.size()-sizeof(quint16));
tcpSocket.write(block);
}
在界面上显示服务器返回到缓冲区中的内容
void TcpClient::update(){
QDataStream in(&tcpSocket);
QString meg;
in.setVersion(QDataStream::Qt_4_7);
forever {
if (nextBlockSize == 0) {
if (tcpSocket.bytesAvailable() < sizeof(quint16))
break;
in >> nextBlockSize;
}
if (nextBlockSize == 0xFFFF) {
closeConnection();
break;
}
if (tcpSocket.bytesAvailable() < nextBlockSize)
break;
in>>meg;
ui->textEdit->clear();
ui->textEdit->append(meg);
nextBlockSize = 0;
}
}
我就是希望按下button1后可以用50个socket同时连接服务器并且在界面上显示50个服务器返回到缓冲区中的内容
在头文件中定义了一个全局可以使用的socket 但是用循环的话始终都只有这么一个socket连接服务器 怎么实现建立50个socket呢 因为
下面的槽都没有参数可以传递 怎么调用才能实现啊
昨天小弟问过这个问题了 还望牛人解答啊 谢谢大家啦