Здравствуйте уважаемые форумчане. Возникла проблема при запуске программы на удаленном сервере (debian). Сама программа предтавляет из себя консольный сервер, который должен принимать запросы от клиентов через инет. Суть проблемы состоит в том, что при запуске локально все работает прекрасно. А вот при запуске программы на сервере при попытке создании connect(m_ptcpServer, SIGNAL(newConnection()),this, SLOT(slotNewConnection())); выбивает ошибку segmentation fault. Как выяснилось проблема в создании нового socket. Почему выдает эту ошибку ума не приложу.
Ниже приведен текст программы.
main.cpp
#include <QtCore/QCoreApplication>
#include "server.h"
#include <QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
server *create_server=new server();
qDebug()<<"server create";
return a.exec();
}
server.h
#ifndef SERVER_H
#define SERVER_H
#include <QObject>
#include <QtCore>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
class server : public QObject
{
Q_OBJECT
public:
server();
QTcpServer *m_ptcpServer;
quint16 m_nNextBlockSize;
void sendToClient(QTcpSocket* pSocket, const QString& str);
protected:
void sendToClients(const QByteArray& line);
public slots:
void slotNewConnection();
void slotReadClient();
};
#endif // SERVER_H
server.cpp
#include "server.h"
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
#include <QtSql>
server::server()
{
m_nNextBlockSize=0;
m_ptcpServer = new QTcpServer(this);
if (!m_ptcpServer->listen(QHostAddress::Any, 2323)) {
qDebug()<<"Server is not working "<<m_ptcpServer->errorString();
m_ptcpServer->close();
return;
}
qDebug()<<"Server is working";
connect(m_ptcpServer, SIGNAL(newConnection()),this, SLOT(slotNewConnection()));
}
void server::slotNewConnection()
{
QTcpSocket* pClientSocket = m_ptcpServer->nextPendingConnection(); //ОШИБКА ЗДЕСЬ!!!
connect(pClientSocket, SIGNAL(disconnected()),
pClientSocket, SLOT(deleteLater())
);
connect(pClientSocket, SIGNAL(readyRead()),
this, SLOT(slotReadClient())
);
qDebug()<<"Server Response: Connected!";
}