最近在用QtNetwork编写服务器程序进行TCP/IP通信,大体过程如下:
1. 创建一个QTcpServer实例,监听目标IP和端口;
2. 一旦监听到有连接,获取和客户端之间的socket;
3. 使用socket进行通信;
4. 通信结束后,可以手动释放socket,也可以不管它,在释放QTcpServer的时候会把其下的所有socket全部自动释放。
在编写时,我做了如下事:
TcpNetwork::TcpNetwork()
{
...
connect(mySocket, SIGNAL(disconnect(QTcpSocket*)), this, SLOT(ServerConnectionLost(QTcpSocket*)));
...
}
TcpNetwork::~TcpNetwork()
{
if (tcpServer != NULL)
{
delete tcpServer;
}
}
void TcpNetwork::ServerConnectionLost(QTcpSocket *socket)
{
if (socket == mySocket)
{
...
// debug
delete mySocket;
mySocket = NULL;
...
}
}
这样在关