服务器
myserver.ts
用TypeScript编写:
import { createServer } from 'net';
function main() {
const socketServer = createServer((socket) => {
socket.on('data', function (data) {
console.log('Received: ' + data.toString());
})
socket.pipe(socket);
});
socketServer.listen(60001, '127.0.0.1');
}
main();
用Java编写的客户端:
public static void main(String[] args) throws Exception {
try (var socket = new Socket("127.0.0.1", 60001);
var outStream = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))) {
outStream.write("Hey there");
outStream.flush();
}
}
在控制台中运行服务器:
ts-node ./myserver.ts
。然后运行java程序。服务器控制台输出:
$ ts-node ./myserver.ts
Received: Hey there
Error: read ECONNRESET
at TCP.onStreamRead (node:internal/stream_base_commons:218:20) {
errno: -4077,
code: 'ECONNRESET',
syscall: 'read'
}
如您所见,我收到了“嘿,那里”。但为什么服务器会关闭呢?我知道客户端关闭了连接,但无论如何服务器应该继续监听,对吗?
我的目标是将多条单独的消息发送到 .ts 服务器。我希望服务器一直处于活动状态。
我注释掉了 .ts 脚本中的
socket.pipe(socket);
行,现在它可以工作了。