0
在下面的代碼中,我可以識別客戶端是否連接並添加了QTableWidget中的行,但我怎麼知道客戶端已斷開連接,所以我可以從同一個表中刪除斷開的客戶端的一行。QTcpServer或QTcpClient(在服務器端)知道,連接的客戶端現在斷開連接
TcpServer::TcpServer(QWidget *parent) :QDialog(parent),ui(new Ui::TcpServer)
{
ui->setupUi(this);
m_coSerSo =new CoServerSocket(this);
count=0;
connect(m_coSerSo,SIGNAL(newConnection()),this, SLOT(updateConnectionTable()));
}
TcpServer::~TcpServer()
{
delete ui;
}
void TcpServer::updateConnectionTable()
{
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
ui->tableWidget->setItem(row, 0, new QTableWidgetItem(m_coSerSo->getPeerAdd()));
ui->tableWidget->setItem(row, 1,
new QTableWidgetItem(QDateTime::currentDateTime().toString()));
}
CoServerSocket::CoServerSocket(QObject *parent)
: QTcpServer(parent)
{ peerAdd ="good1";
}
void CoServerSocket::incomingConnection(int socketId)
{
socketClient = new CoClientSocket(this);
socketClient->setSocketDescriptor(socketId);
peerAdd = socketClient->peerAddress().toString();
}
QString CoServerSocket::getPeerAdd()
{
return peerAdd;
}
謝謝,我仍然沒有嘗試映射,但它會幫助我。 – anj 2011-06-14 11:38:20