如何使用node.js启动TCP套接字连接并向其写入内容?

时间:2014-03-05 15:37:40

标签: node.js sockets tcp

我的LAN网络上的端口4028上有一个打开的tcp on machine,IP地址为192.168.1.166。我想用节点net.connect连接到它,但我可能在这里遗漏了一些东西。

我的代码:

var net = require("net");

var s = new net.Socket({ 
  fd: null,
  allowHalfOpen: true,
  readable: true,
  writable: true
});

s.connect(4028, "192.168.1.166");

s.write("{\"command\":\"status\"}");

s
.on('data',function(data){
  console.log(data.toString());
  JSON.stringify(data, null, 4);
})
.on('connect', function(data){
  console.log("connected!");
});

错误:

$node app.js
net.js:50
  throw new TypeError('Unsupported fd type: ' + type);
        ^
TypeError: Unsupported fd type: TTY
    at createHandle (net.js:50:9)
    at new Socket (net.js:156:20)
    at Object.<anonymous> (/home/XXXX/node/net/app.js:3:9)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

到目前为止,我正在跟进api文档http://nodejs.org/api/net.html,但我肯定错过了一些东西。

我已经设法用

做到了
var net = require("net");

var client = net.connect(4028, "192.168.1.166");


.on('data',function(data){
  console.log(data.toString());
  JSON.stringify(data, null, 4);
})
.on('connect', function(data){
  console.log("connected!");
});

但是我该怎么写呢?

1 个答案:

答案 0 :(得分:0)

Socket对象中的选项是可选的,fd选项在Windows中不完全支持。

来自文档http://nodejs.org/api/net.html

  

fd允许您指定套接字的现有文件描述符。组   可读和/或可写为真以允许对此进行读取和/或写入   socket(注意:仅在传递fd时有效)。   关于allowHalfOpen,请参阅createServer()和'end'事件。

也看到了这个

node.js - share sockets between processes

打开连接的首选方式是

net.createConnection

你可以在connect事件被解雇后开始写作。