Название: (решено) примитивный tcp клиент Отправлено: lem от Декабрь 24, 2010, 14:21 я в шоке..
обьясните плз почему работает код: QTcpSocket client; QHostAddress addr("127.0.0.1"); client.connectToHost(addr, 56); QByteArray array = ui->lineEdit->text().toAscii(); char * str; str = array.data(); client.write(str, 3); client.close(); QMessageBox box; QString s; s.fromAscii(str); box.setText(str); box.exec(); а такой не работает: QTcpSocket client; QHostAddress addr("127.0.0.1"); client.connectToHost(addr, 56); QByteArray array = ui->lineEdit->text().toAscii(); char * str; str = array.data(); client.write(str, 3); client.close(); --------------------------------- в первом варианте я добавил мессаджбокс для проверки (найти, де ошибка) и все заработало второй тоже подключается к серверу, прерывает соединение, но не передает данных Название: Re: примитивный tcp клиент Отправлено: registrationfedser87 от Декабрь 24, 2010, 14:43 Во втором случае у тебя сокет удаляется, а отправить ещё не успевает. В первом же случае ты вызываешь messageBox.exec(), что не удаляет сокет пока ты не закроешь messageBox.
Название: Re: примитивный tcp клиент Отправлено: lem от Декабрь 24, 2010, 14:55 а есть команда ожидания?
чтоб время занять не мессаджбоксом а ей Название: Re: примитивный tcp клиент Отправлено: Sanya от Декабрь 24, 2010, 15:09 Код
Это конечно чем-то напоминает индусский код, но работать должно, не проверял. :) А чем не устраивает слот-сигнальный механизм для ожидания записи данных? Название: Re: примитивный tcp клиент Отправлено: lem от Декабрь 24, 2010, 15:17 1)таки напоминает
2)я таких слов не знаю... Название: Re: примитивный tcp клиент Отправлено: lem от Декабрь 24, 2010, 15:23 + вылазит ошибка
мол &client - это QTcpSocket а надо QObject Название: Re: примитивный tcp клиент Отправлено: Sanya от Декабрь 24, 2010, 15:42 2) ну это же основа Qt! Лучше попробуй сделать с сигналами и выложи если не получится.
может в именах где накосячил? QTcpSocket наследуется от QObject Название: Re: примитивный tcp клиент Отправлено: DmP от Декабрь 24, 2010, 15:52 а есть команда ожидания? QAbstractSocket::waitForBytesWritten()Название: Re: примитивный tcp клиент Отправлено: lem от Декабрь 24, 2010, 16:02 ВСЕМ СПАСИБО заработало
QTcpSocket client; QHostAddress addr("127.0.0.1"); client.connectToHost(addr, 56); QByteArray array = ui->lineEdit->text().toAscii(); char * str; str = array.data(); client.write(str, 3); client.waitForBytesWritten(); client.close(); |