QTcpServer - błąd programu przy odbieraniu i wysyłaniu danych

0

Witam, napisałem server, który za za danie ma wykryć nowe połączenie na ustalonym porcie a następnie odbierać i wysyłać do niego wiadomości:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
     server = new QTcpServer(this);
    connect(server, SIGNAL(newConnection()), this, SLOT(dodaj()));
    connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(lacz()));



}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::lacz()
{

    server->listen(QHostAddress::Any, ui->lineEdit_3->text().toInt());
    ui->textBrowser->setText(ui->textBrowser->toPlainText() + "Server postawiony\n");

}

void MainWindow::dodaj()
{
    ui->textBrowser->setText(ui->textBrowser->toPlainText() + "Połączono\n");
    QTcpSocket *client = server->nextPendingConnection();
    connect(client, SIGNAL(readyRead()), this, SLOT(rd()));
    connect(ui->pushButton_2, SIGNAL(clicked()),this,SLOT(slij()));
}

void MainWindow::rd()
{
    char text[50];
client->read(text,50);
    ui->textBrowser->setText(ui->textBrowser->toPlainText() + text + "\n");
}

void MainWindow::slij()
{
    client->write(ui->lineEdit->text().toAscii());
    ui->textBrowser->setText(ui->textBrowser->toPlainText() + "Wysłano: " + ui->lineEdit->text() + "\n");
}

Ale niestety program się wysypuję kiedy coś ma wysłać albo odebrać od clienta. O co chodzi?
Z góry dziękuje za pomoc.

0

Nie pokazujesz nam pliku nagłówkowego ale skoro się kompiluje to rozwiązanie jest proste. W funkcji rd i funkcji slij korzystasz ze zmiennej client. Jedno drobne pytanie. Gdzie ją inicjalizujesz? :O Przeciez to: QTcpSocket *client = server->nextPendingConnection(); nie jest inicjalizacja, a przynajmniej nie tej zmiennej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1