js 给服务器发消息,的Node.js:发送消息至服务器

我有我的服务器上运行以下的node.js:的Node.js:发送消息至服务器

var net=require('net');

var util=require('util');

var server=net.createServer(function(conn){

conn.on('connect',function(){

util.puts('connect');

});

conn.on('data',function(data){

util.puts(data);

});

});

server.listen(5000,'172.16.1.197');

这一切正常,我可以telnet到172.16.1.197:5000和它的行为预期。

现在,我有一个客户端在IP地址为172.16.1.218的另一个盒子上运行,我只是想发送一条消息到服务器。

function sendAMessage(payLoad){

//what to put in here?

}

payLoad应打印在服务器端。

我知道这看起来很简单,但我真的无法绕过它 - 我对node.js很陌生。

很多感谢,

添加一些代码:

这里的客户端(172.16.1.218):

var http = require('http');

var util=require('util');

var net=require('net');

var localHash={};

var chunkLength=100;

http.createServer(function(request, response) {

var proxy = http.createClient(80, request.headers['host'])

var proxy_request = proxy.request(request.method, request.url, request.headers);

proxy_request.addListener('response', function (proxy_response) {

proxy_response.addListener('data', function(x) {

var responseData=x.toString("binary");

var bytes=getBytes(responseData);

util.puts(bytes.length);

for(var i=0;i

var hash=DJBHash(bytes[i]);

//util.puts(hash);

if(hash in localHash){

//in hash, send alias

//response.write(""+hash+"",'binary');

response.write(bytes[i],'binary');

}else{

//not in hash, send full chunk

updateRemoteHash(hash,bytes[i]);

response.write(bytes[i],'binary');

localHash[hash]=bytes[i];

}

}

//response.write(bytes,"binary");

});

proxy_response.addListener('end', function() {

response.end();

});

response.writeHead(proxy_response.statusCode, proxy_response.headers);

});

request.addListener('data', function(chunk) {

util.puts(chunk);

proxy_request.write(chunk, 'binary');

});

request.addListener('end', function() {

proxy_request.end();

});

}).listen(8080,'172.16.1.218');

function getBytes(responseData){

var f=chunkLength;

var toTransmit="";

var p=0;

var bytes=Array();

var N=responseData.length;

if(N>f){

p=Math.floor(N/f);

var hash="";

var chunk="";

for(var i=0;i

chunk=responseData.substr(f*i,f);

toTransmit=toTransmit+chunk;

bytes[i]=chunk;

/*hash=DJBHash(chunk);

if(localHash[hash]==undefined){

localHash[hash]=chunk;

//updateRemoteHash(hash,chunk);

toTransmit=toTransmit+chunk;

}else{

sys.puts("***hit"+chunk);

toTransmit=toTransmit+chunk;//"***EOH"+hash;

}*/

}

//remainder:

chunk=responseData.substr(f*p);

toTransmit=toTransmit+chunk;

bytes[p]=chunk;

/*hash=DJBHash(chunk);

if(localHash[hash]==undefined){

localHash[hash]=chunk;

//updateRemoteHash(hash,chunk);

toTransmit=toTransmit+chunk;

}else{

toTransmit=toTransmit+chunk;//"***EOH"+hash;

}*/

}else{

toTransmit=responseData;

bytes[0]=responseData;

}

return bytes;

}

function DJBHash(str) {

var hash = 5381;

for(var i = 0; i < str.length; i++) {

hash = (((hash << 5) + hash) + str.charCodeAt(i)) & 0xffffffff;

}

if(hash

hash=hash*-1;

}

return hash;

}

function updateRemoteHash(hash,chunk){

var c=net.createConnection(5000,'172.16.1.197');

c.on('connect',function(){

c.write(hash);

c.end();

});

}

和服务器端(172.16.1.197) :

var net=require('net');

var util=require('util');

var server=net.createServer(function(conn){

conn.on('connect',function(){

util.puts('connect');

});

conn.on('data',function(data){

util.puts(data);

});

});

server.listen(5000,'172.16.1.197');

2011-09-06

Eamorr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值