есть там переменная, отвечающая за tcp порт ( socketDescriptor), так вот, каким образом она инициализируется в программе?Т.е. откуда берет значения порта?
Как я понял socketDescriptor это числовое представление описателя соединения. Виндовый HANDLE или если быть точнее SOCKET.
Если я не правильно понял, поправьте меня.
p.s. завтра нужно будет глянуть исходники...
void FortuneServer::incomingConnection(int socketDescriptor)
{
.......
}
ivoid FortuneThread::run()
{
QTcpSocket tcpSocket;
if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocket.error());
return;
}
.....// все данные переданные по соккету попадут только к тому клиенту, который запросил соединение.
}
Да не, вопрос в том, там же откуда-то берется значение явное(допустим, 6138), так вот, откуда возвращается это значение?из какого вызова?я конечно могу и так оставить, но надо разбираться в том, что пишешь...
Где там? Ткните(файл, строка) Я в Threaded Fortune Server что-то такого не нашел.
А так можно получить методом
int QAbstractSocket::socketDescriptor () const
Проще : я не вижу , где int-переменной socketDescriptor присваивается какое-либо целочисленное значение.
Вопрос 2 :
Мне необходимо на сервера(аналог threaded fortune server) обрабатывать запросы клиента :
1. Запрос на соединение, т.е информируем сервер о том, что клиент законнектился и ему надо скинуть данные.
2. Запрос на повторную передачу данных , т.е. при запросе 1 передали , допустим, 10 строчек QString из QStringList, клиент их обработал, и необходимо передать другие 10 строчек.
3. Запрос на передачу данных от клиент, т.е. клиент передает обработанные данные на сервер, сервер уже их сохраняет, допустим, в файл.
Отсюда : обработку этих запросов осуществлять в функции потока-клиента Run(), или же отдельно?
Прощу подсказать, т.к с клиент-сервер приложениями сталкиваюсь впервые..
void FortuneServer::incomingConnection(int socketDescriptor)
{
QString fortune = fortunes.at(qrand() % fortunes.size());
FortuneThread *thread = new FortuneThread(socketDescriptor, fortune, this);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
FortuneThread::FortuneThread(int socketDescriptor, const QString &fortune, QObject *parent)
: QThread(parent), [b]socketDescriptor(socketDescriptor)[/b], text(fortune)
{
}
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)