我想通过netcat编译一些降价帖子。这是Makefile
。
# Makefile
all: $(POSTS)
$(POST_DEST_DIR)/%.html: $(POST_SRC_DIR)/%.md | $(POST_DEST_DIR)
@nc localhost 3000 < $< > $@
@echo 'compiled $@'
.DELETE_ON_ERROR: $(POSTS)
当TCP服务器退出时出错,nc
在Node.js nc
包装器出错时退出而没有错误。这是一个Node.js包装器脚本。
// nc.js
var client = require('net').connect(3000);
process.stdin.pipe(client);
client.pipe(process.stdout);
client.on('error', function (err) {
console.error(err.message);
process.exit(1);
});
然后
# Makefile with nc.js
$(POST_DEST_DIR)/%.html: $(POST_SRC_DIR)/%.md | $(POST_DEST_DIR)
@node nc.js < $< > $@
@echo 'compiled $@'
TCP服务器也是用NodeJS编写的。我希望nc
在TCP服务器崩溃时退出并出现错误,以便立即停止make
进程。
这是一个用于测试的TCP服务器。
// tcp server for error test
require('net').createServer(function(socket) {
process.exit(1);
}).listen(3000);
我已阅读nc
手册页。但我发现做我想做的事是不可能的。我错过了什么吗?
答案 0 :(得分:1)
TCP没有任何远程服务器“崩溃”的概念。当打开TCP套接字的程序结束时(无论如何),操作系统将关闭套接字。
为了做你想做的事,你需要创建一个协议,服务器会确认完成你想要它执行的任何操作,然后客户端将以失败退出,除非它得到应用程序层确认。