java - Nodejs 和 Java 之间的连接。当 java 客户端连接到 nodejs 服务器时,它显示错误,

标签 java node.js socket.io

我在 node.js 上有一个服务器,在 Java 上有一个客户端。当 Java 客户端连接到 Nodejs 服务器时,它会显示如下错误。

我在 node.js 上有一个服务器

const net = require('net');
const server = net.createServer((c) => {
// 'connection' listener
console.log('client connected');
c.on('end', () => {
console.log('client disconnected');
});
c.write('hello from server\r\n');
c.pipe(c);
});

server.on('data', ()=>{
Console.log(data); 
});
server.on('error', (err) => {
throw err;
});
server.listen(6969, () => {
console.log('server bound');
});

我有一个java代码。

public class NodeJsEcho { 
// socket object
private Socket socket = null; 
public static void main(String[] args) throws UnknownHostException,    
IOException, ClassNotFoundException { 
    // class instance 
    NodeJsEcho client = new NodeJsEcho(); 
    // socket tcp connection 
    String ip = "127.0.0.1"; 
    int port = 6969; 
    client.socketConnect(ip, port); 
    // writes and receives the message

    String message = "message123"; 
    System.out.println("Sending: " + message); 
    String returnStr = client.echo(message); 
    System.out.println("Receiving: " + returnStr); 
    } 
// make the connection with the socket 
private void socketConnect(String ip, int port) throws UnknownHostException,    
 IOException{
    System.out.println("[Connecting to socket...]"); 
    this.socket = new Socket(ip, port); 
    }
// writes and receives the full message int the socket (String) 
public String echo(String message) 
{
    try {
        // out & in 
        PrintWriter out = new PrintWriter(getSocket().getOutputStream(),    
        true); 
        BufferedReader in = new BufferedReader(new   
        InputStreamReader(getSocket().getInputStream()));
        // writes str in the socket and read 
        out.println(message); 
        String returnStr = in .readLine();
        return returnStr; 
        } catch (IOException e) 
    {
            e.printStackTrace();
            }
    return null; 
    } // get the socket instance 
private Socket getSocket() 
{
    return socket; 
    }

}

它向我显示服务器端的错误:

 client connected
  events.js:141
  throw er; // Unhandled 'error' event
  ^

Error: read ECONNRESET
at exports._errnoException (util.js:870:11)
at TCP.onread (net.js:550:26)
Done.

最佳答案

您没有在客户端关闭套接字 - 导致连接重置。

// In echo()
in.close();
out.close();

// In main()
getSocket().close();

关于java - Nodejs 和 Java 之间的连接。当 java 客户端连接到 nodejs 服务器时,它显示错误,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099854/

相关文章:

java - 并非所有 Feign 客户端都接收到“全局”Feign 拦截器

java - 与抽象类相比,何时使用接口(interface)?

javascript - 使用 socket.io 从服务器接收 ArrayBuffer 时 Web Audio API 播放延迟

java - 双态 Action 的最佳方法

java - 数组拆分部分时出现字符串错误

javascript - Node 服务器无法连接mysql数据库connect ETIMEDOUT at Connection._handleConnectTimeout

node.js - 使用 Socket.IO 将 Node.JS 服务器连接到另一个 Node.JS 服务器?

javascript - 如何在 Electron 中触发自动更新事件以进行测试?

android - 如何在 android 7.0 及更高版本中保持 Activity 套接字连接?

javascript - 如何防止多个 Socket.io 事件监听器