这里的任何人都可以给我一些使用node.js中套接字的指针吗?
可以在端口8000上打开172.0.0.1上的tcp连接,例如使用net.createConnection(port,host)
var net = require('net'),querystring = require('querystring'),http = require('http'),port = 8383,host = 172.123.321.213,path = /path/toService,_post = ''; var server = http.createServer(function(req,res) { if(req.method == 'POST') { req.on('data',function(data) { body+=data; }); req.on('end',function() { _post = querystring.parse(body);//parser post data console.log(_post); }) } var socket = net.createConnection(port,host); var socket = net.createConnection(port,host); socket.on('error',function(error) { send404(res,host,port); }) socket.on('connect',function(connect) { console.log('connection established'); res.writeHead(200,{'content-type' : 'text/html'}); res.write('<h3>200 OK: Connection to host ' + host + ' established. Pid = ' + process.pid + '</h3>\n'); res.end(); var body = ''; socket._writeQueue.push(_post); socket.write(_post); console.log(socket); socket.on('end',function() { console.log('socket closing...') }) }) socket.setKeepAlive(enable=true,1000); }).listen(8000); send404 = function(res,port) { res.writeHead(404,{'content-type': 'text/html'}); res.write('<h3>404 Can not establish connection to host: ' + host + ' on port: ' + port + '</h3>\n'); res.end(); }
但是现在我需要将我的数据发送到定义的路径 – 如果我将路径添加到主机然后尝试连接,那么连接将失败.
有任何想法吗?
提前致谢
解决方法
你的“socket”对象只是一个普通的
TCP socket,它只是一个简单的双向通信通道.您尝试使用的HTTP方法(例如res.writeHead())不适用,因此您必须手动编写请求.尝试这样的事情:
var socket = net.createConnection(port,host); console.log('Socket created.'); socket.on('data',function(data) { // Log the response from the HTTP server. console.log('RESPONSE: ' + data); }).on('connect',function() { // Manually write an HTTP request. socket.write("GET / HTTP/1.0\r\n\r\n"); }).on('end',function() { console.log('DONE'); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。