之前的项目中使用过Tcp数据传输,但是相对较少,现在写一个例子,便于记忆,也分享一下。
主要实现Tcp服务端和Tcp客户端,客户端支持多个客户端连接服务端。
服务端代码如下:
TcpServer::TcpServer(QObject *parent) : QObject(parent)
{
pTcpServer = new QTcpServer();
connect(pTcpServer, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
connect(pTcpServer, SIGNAL(acceptError(QAbstractSocket::SocketError)), this, SLOT(slotAcceptError(QAbstractSocket::SocketError)));
}
bool TcpServer::setServerInfo(QString serverIp, int serverPort)
{
if(pTcpServer->listen(QHostAddress(serverIp), quint16(serverPort))){
return true;
}
return false;
}
bool TcpServer::sendData(qintptr ptr, QString strMsg)
{
if(mMapAllClientSocket.contains(ptr)){
mMapAllClientSocket.value(ptr)->write(strMsg.toUtf8());
if(mMapAllClientSocket.value(ptr)->waitForBytesWritten()){
return true;
}
else{
return false;
}
}