node.js - Nodejs setNoDelay() 不起作用。是否有刷新套接字缓冲区的替代方案?

标签 node.js sockets tcp

我正在使用这段代码将数据发送到 Java 应用程序。我想在不关闭连接的情况下发送多条消息。 Java 应用程序将等待并打印每条传入消息

var net = require('net');
var client = net.connect(1010, 'localhost');
client.setNoDelay();
client.write("asdfdsfsdf");
client.write("jghjhgjhgj");

问题是我不会收到 2 条单独的消息,而只会收到 1 条。此外,除非我调用 client.end(),否则 Java 应用程序甚至不会收到数据。 如何避免关闭连接并刷新多条消息?

最佳答案

在数据末尾放置一个换行符。

var net = require('net');
var client = new net.Socket();
client.connect(1010, 'localhost', function() {
    client.setNoDelay();
    client.write("asdfdsfsdf\n");
    client.write("jghjhgjhgj\n");
});

我也遇到过同样的问题。添加\n 为我解决了这个问题。

关于node.js - Nodejs setNoDelay() 不起作用。是否有刷新套接字缓冲区的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344827/

相关文章:

ios - 为什么 GCDAsyncSocket 连接在设备锁定时被终止,但在按下主页按钮时却没有?

python - 在 Python 中通过 TCP 发送/接收多条消息

java.net.SocketException : Connection reset - Between a client and server deployed as webapps in tomcat 异常

c++ - WSAGetLastError 返回 WSAENOTSOCK - 原因?

c - 如何从字符串中获取字符串(C 中的字符指针)

Java代理拦截请求

node.js - 如何使用 Express 和 PassportJS 正确报告无效登录?

json - 我没有从 Amazon Lambda 获得适当的 JSON 响应

javascript - NodeJS、Express、原型(prototype)中的变量范围问题

session - 找不到模块 'connect',当尝试使用 require ('connect' 时。utils.parseCookie 与 nodejs