Название: UDP Echo client-server
Отправлено: Tin-moon от Октябрь 08, 2010, 19:49
Вопрос в чем ошибка, клиент не получает сообщение от сервера Клиент: MainWindow::MainWindow(QWidget *parent): QWidget(parent){ QTextCodec *codec = QTextCodec::codecForName("cp1251"); QTextCodec *codec2 = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec2); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec); setWindowTitle(tr("EchoUDP клиент"));
m_ptxt = new QTextEdit(); start = new QPushButton(tr("Отправить")); line = new QLineEdit();
udpSocket = new QUdpSocket(); udpSocket->bind(7,QUdpSocket::ShareAddress);
QVBoxLayout *pvb = new QVBoxLayout; pvb->addWidget(new QLabel("<h1>EchoUDP Client</h1>")); pvb->addWidget(m_ptxt); pvb->addWidget(line); pvb->addWidget(start); setLayout(pvb);
connect(start, SIGNAL(clicked()), this, SLOT(startBroadcasting())); connect(udpSocket,SIGNAL(readyRead()),this,SLOT(answer()));
}
void MainWindow::startBroadcasting(){ QByteArray datagram; QHostAddress a(QString("127.0.0.1")); int port = 7; datagram.append(line->text()); udpSocket->writeDatagram(datagram.data(), datagram.size(),a,port);
}
void MainWindow::answer(){ QByteArray datagram; QHostAddress a; quint16 port; datagram.resize(udpSocket->pendingDatagramSize()); udpSocket->readDatagram(datagram.data(),datagram.size(), &a, &port); m_ptxt->append(datagram.data()); }
Сервер MainWindow::MainWindow(quint16 nPort,QWidget *parent): QWidget(parent),m_nNextBlockSize(0){ QTextCodec *codec = QTextCodec::codecForName("cp1251"); QTextCodec *codec2 = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec2); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec);
setWindowTitle(tr("EchoUDP сервер"));
mySocket = new QUdpSocket(this); mySocket->bind(7,QUdpSocket::ShareAddress); connect(mySocket,SIGNAL(readyRead()),this,SLOT(processPendingDatagrams()));
m_ptxt = new QTextEdit; m_ptxt->setReadOnly(true);
QVBoxLayout *pvb = new QVBoxLayout; pvb->addWidget(new QLabel("<h1>EchoUDP Server</h1>")); pvb->addWidget(m_ptxt); setLayout(pvb); }
void MainWindow::processPendingDatagrams(){ while (mySocket->hasPendingDatagrams()){ QByteArray datagram; QHostAddress a; quint16 port; datagram.resize(mySocket->pendingDatagramSize()); mySocket->readDatagram(datagram.data(),datagram.size(),&a,&port); m_ptxt->append(datagram.data()); mySocket->writeDatagram(datagram.data(),datagram.size(),a,port); }
}
Название: Re: UDP Echo client-server
Отправлено: garryHotDog от Октябрь 09, 2010, 00:54
пробовал flush() делать сразу после отправки?
|