Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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
Javascript java客户端发送https请求后,Node.js服务器在数据事件和结束事件上都转到_Javascript_Java_Node.js_Https - Fatal编程技术网

Javascript java客户端发送https请求后,Node.js服务器在数据事件和结束事件上都转到

Javascript java客户端发送https请求后,Node.js服务器在数据事件和结束事件上都转到,javascript,java,node.js,https,Javascript,Java,Node.js,Https,代码链接: 客户端代码: public class SendClient { public static void main(String[] args) throws Exception { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] get

代码链接:

客户端代码:

public class SendClient {
    public static void main(String[] args) throws Exception {

    TrustManager[] trustAllCerts = new TrustManager[] {
        new X509TrustManager() {
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }

        public void checkClientTrusted(X509Certificate[] certs, String authType) {  }

        public void checkServerTrusted(X509Certificate[] certs, String authType) {  }

        }
    };

    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

    // Create all-trusting host name verifier
    HostnameVerifier allHostsValid = new HostnameVerifier() {
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };
    // Install the all-trusting host verifier
    HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
    /*
    * end of the fix
    */
    URL url = new URL("https://localhost:8001");

    URLConnection con = url.openConnection();
    //HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
    con.setDoOutput(true);
    con.setDoInput(true);
    con.setUseCaches(false);

    JSONObject writeJsonObj = new JSONObject();

    //BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(con.getOutputStream()));
    //BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

    PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(con.getOutputStream()));
    writeJsonObj.put("msg","Hello server!");
    System.out.println(writeJsonObj.toString());
    printWriter.println(writeJsonObj);
    printWriter.flush();
    /*String text = writeJsonObj.toString();
    writer.write(text);
    writer.flush();*/

    while (true) {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
        System.out.println("--prepare to receive message");

        String line = null;

        line = bufferedReader.readLine();
        System.out.println("read something from server");
        System.out.println(line);
        JSONObject readJsonObj = new JSONObject(line);

        System.out.println(readJsonObj.toString());

        if (readJsonObj.has("test")) {
            System.out.println("Send the second message to server");
            printWriter.println(writeJsonObj);
            printWriter.println();
            printWriter.flush();
        }
    }
    }
}
服务器代码:

var https = require('https'); //Require module 
var fs = require('fs');

//varable declared
var Https_Options = null;   //Https server key and certificate
var Server = null;  //https server
var ServerInformation = null;   //Server's address and port
var ClientNumber = 0;   //current nunber of connected client
var num = 1;

Https_Options =
{
    key : fs.readFileSync('./hacksparrow-key.pem'),
    cert : fs.readFileSync('./hacksparrow-cert.pem'),
    allowHalfOpen : true
};

Server = https.createServer(Https_Options).listen(8001, "localhost", function() {
        ServerInformation = Server.address();
        console.log("Https server is running at "+ServerInformation.address+":"+ServerInformation.port);
    }    //end of https.createServer call back function
);    //end of https.createServer.listen

//Request listener, listening request event when client sending the request
//Call Back Function Description: "data", "close", "error" event

Server.on('request', function(req, res) {
    console.log("clients: "+ (ClientNumber++));
    //Data listener, litening is there any data sent from client
    //Call Back Function Description: The handler of "data" event
    req.on('data', function(chunk) {
        var ServerDataObj = null;   //the data received from client and also send this Obj as response to client
        var testobj = {};

        testobj = 
        {
            'test' : num++
        };

        //ServerDataObj = JSON.parse(chunk.toString());
        ServerDataObj = chunk.toString();
        console.log('server receive message' + ServerDataObj);
        res.write(JSON.stringify(testobj) + '\r\n');    //send back to client
        delete ServerDataObj;

    }    //end of event "data" call back function
    );    //end of event "data"

    req.on('end', function() {
            console.log("client end.");
        }    //end of event "end" call back function
    );  

    //listening close event
    //Call Back Function Description: Emmit whether the client socket close
    req.on('close', function() {
            console.log("client close.");
            --ClientNumber;
        }    //end of event "close" call back function
    );    //end of event "close"

    //Error listener, 
    //Call Back Function Description: if error happen, catch & print
    req.on('error', function(err) {
            console.error("req: "+err);
        }    //end of event "error" call back function
    );    //end of event "error"

}    //end of event "request" call back function
);    //end of event "request"
我使用PrintWiter发送对Java客户端代码的请求

node.js服务器成功接收到请求数据,但它触发了终端处理程序,导致服务器无法再从客户端接收请求

我还尝试BufferedWriter和DataOutputStream将请求发送到服务器,但它们都有相同的问题

  • 有没有办法不触发服务器上的终端处理程序并保持客户端持续发送数据
  • 或者通过https在Java客户端和node.js服务器之间发送消息的任何其他方式

您尝试过什么?请发布你的代码。你可能想调查WebSocket。嘿,试着问一些范围足够窄的问题,这样你就可以在这里发布相关代码,而不会让人感到不知所措。从你发布的方式来看,这太宽泛和苛刻了。人们探究他人问题的时间和耐心有限。此网站用于解决有针对性的技术问题。请点击顶部的帮助链接,看看如何提问。很抱歉我的第一篇帖子。如果我的问题有任何不清楚的地方,请告诉我。谢谢你纠正了我问问题的坏习惯^_^