0
这是一个非常基本的问题。我只是开始一些套接字编程,我正在使用qt/C++。我写了一个简单的程序作为一个练习,连接到一个套接字(localhost loopback在端口80),写入一些数据,等待repsonse,然后在终端输出响应。写入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正在侦听,它在哪里写入“Hello Server”?为什么它不响应?
的另一个问题是,我不得不到Ubuntu本身创建我的港口之一的服务器:sudo的NC -l 77.有没有办法做到告诉操作系统创建一个网络连接我的qt程序中指定的端口? – JohnMerlino
当然,任何事情都是可能的。一般来说,以root身份运行的东西是不安全的。只需使用高端口号(高于1024)。 – BraveNewCurrency