Sockets 写入tcp套接字

Sockets 写入tcp套接字,sockets,tcp,Sockets,Tcp,这是一个相当基本的问题。我刚刚开始一些socket编程,我正在使用qt/c++。我编写了一个简单的程序作为练习,它连接到套接字(端口80处的localhost环回),向套接字写入一些数据,等待repsonse,然后在终端中输出响应 以下是该计划的主要方法: void TcpSocket::ConnectSocket() { socket = new QTcpSocket(this); socket->connectToHost("localhost", 80);

这是一个相当基本的问题。我刚刚开始一些socket编程,我正在使用qt/c++。我编写了一个简单的程序作为练习,它连接到套接字(端口80处的localhost环回),向套接字写入一些数据,等待repsonse,然后在终端中输出响应

以下是该计划的主要方法:

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";
    }
}
现在,我实际上在端口80为localhost设置了一个虚拟主机,它在我的本地机器上提供一个网页。当我执行该程序时,在端点localhost:80上完全没有发生任何事情


如果端口80正在侦听,它会将“Hello Server”写入何处?为什么没有响应?

web服务器没有响应您编写的内容,因为您没有完成发送请求。您至少需要在写入中添加“\n\r\n”


另一个问题是我必须在ubuntu本身的一个端口上创建一个服务器:sudo nc-l 77。有没有办法告诉操作系统在我的qt程序中的指定端口上创建网络连接?当然,任何事情都是可能的。一般来说,以root身份运行东西是不安全的。只需使用高端口号(1024以上)即可。
Connected 
Reading:  0 
""