in following code i can identify if client is connected and a row in QTableWidget is added, but how could i know that a client is disconnected, so I could remove a row, of disconnected client from same table.
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;
}
The socket you create inside
incomingConnection(int)has adisconnected()signal. Use aQSignalMapperto determine which socket was disconnected and update your table view. Quick and dirty code, probably helpful, and certainly full of syntax errors: