2013-05-29 3 views
0

Это довольно элементарный вопрос. Я только начинаю программирование сокетов, и я использую qt/C++. Я написал тривиальную программу как упражнение, которое подключается к сокету (loopback localhost на порту 80), записывает на него некоторые данные, ждет ответа и затем выводит ответ в моем терминале.Запись в гнездо tcp

Вот основной метод программы:

void TcpSocket::ConnectSocket() 
{ 
    socket = new QTcpSocket(this); 
    socket->connectToHost("localhost", 80); 

    if(socket->waitForConnected(3000)){ 
     qDebug() << "Connected"; 

     socket->write("Hello Server"); 
     socket->waitForBytesWritten(1000); 
     socket->waitForReadyRead(3000); 
     qDebug() << "Reading: " << socket->bytesAvailable(); 
     qDebug() << socket->readAll(); 
     socket->close(); 
    } 
    else { 
     qDebug() << "Could not connect"; 
    } 
} 

Отклик выше кода заключается в следующем:

Connected 
Reading: 0 
"" 

Сейчас, прямо сейчас я на самом деле есть виртуальный хост набор для локального хоста в порт 80, который служит веб-странице на моей локальной машине. Когда я выполняю эту программу, абсолютно ничего не происходит на конечной точке localhost: 80.

Если порт 80 прослушивает, где он пишет «Привет, сервер»? И почему он не отвечает?

ответ

0

Веб-сервер не ответил на то, что вы написали, потому что вы не закончили отправку запроса. Как минимум, вам нужно добавить «\ n \ r \ n» к вашей записи.

https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

+0

Другая проблема, я имею создать сервер на одном из моих портов в убунту сам: Суда н.д. -l 77. Есть ли способ сделать сказать, операционную систему, чтобы создать соединение сети на указанный порт в моей программе qt? – JohnMerlino

+0

Конечно, все возможно. В общем, это плохая безопасность для запуска приложений как root. Просто используйте номера портов (выше 1024). – BraveNewCurrency

Смежные вопросы