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