Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java上的服务器未从Qt客户端获取消息_Java_Qt_Server_Client_Qnetworkaccessmanager - Fatal编程技术网

java上的服务器未从Qt客户端获取消息

java上的服务器未从Qt客户端获取消息,java,qt,server,client,qnetworkaccessmanager,Java,Qt,Server,Client,Qnetworkaccessmanager,我有一个非常简单的java服务器: int port = 2245; try { ServerSocket ss = new ServerSocket(port); System.out.println("Waiting for a client..."); Socket incomingClient = ss.accept(); InputStream i = incomingClient.getInput

我有一个非常简单的java服务器:

int port = 2245;
       try {
         ServerSocket ss = new ServerSocket(port);
         System.out.println("Waiting for a client...");

         Socket incomingClient = ss.accept();
         InputStream i = incomingClient.getInputStream();
         OutputStream o = incomingClient.getOutputStream();  // Use it write to the Client Socket
         InputStreamReader isr = new InputStreamReader(i);
         BufferedReader br = new BufferedReader(isr);
         String str = new String();

         while ((str = br.readLine())!=null){
                System.out.println("str = " + str);
                o.write(123); //("message from server");
          }
       } catch(Exception x) { x.printStackTrace(); }
我有一个简单的Qt客户端,它使用QNetworkAccessManager

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QUrl url("http://127.0.0.1:2245");
url.port(6666);
QByteArray postData;
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QString postKey("SomeKey");
postData.append(postKey);
QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
我在主窗口中声明。h在插槽replyFinished中

public slots: 
void replyFinished(QNetworkReply* reply); 
在最好的情况下,服务器会得到一些头,比如(POST/HTTP/1.1) 内容类型:application/x-www-form-urlencoded及其他)

但在服务器上,我无法从客户端读取我的消息
客户端没有收到来自java服务器的任何响应

Qt客户端的正确代码如下:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QUrl url("http://192.168.0.101:8000");
url.port(8000);

QByteArray postData;
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QString postKey("some data");
postData.append(postKey);
QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));

manager->post(request, postData);
}

要获得响应,请声明并实现以下插槽

void MainWindow::replyFinished(QNetworkReply *reply){
qDebug() << "Status" << reply->errorString();
qDebug() << "Status" << reply->error();


     QByteArray data = reply->readAll(); //It's works!
     qDebug() << "data: " << data;
void主窗口::replyFinished(QNetworkReply*reply){

qDebug()您使用的是端口2245还是6666?它只能是一个或另一个,不能同时使用两个。我在任何地方都使用2245端口,很抱歉,如果它混淆了您的服务器看到qt客户端,甚至获取一些数据,但我无法从java服务器获得任何qt客户端响应。在这种情况下,这行代码是什么:
url.port(6666);
我刚刚在代码端口2245中设置了everywhere,但仍然无法正常工作,客户端完全不想从服务器获取消息