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
js 给服务器发消息,的Node.js:发送消息至服务器相关推荐
- Node.js(一)——(Node.js安装及使用,通过Node.js搭建服务器,模块化及自定义模块,npm/yarn/nvm,内置模块fs的使用,buffer及stream,新闻列表案例)
目录 1.Node.js介绍 2.安装Node.js 3.使用Node.js实现第一个服务器 3.1初步感受Node.js 3.2Google Chrome 默认非安全端口列表,尽量避免以下端口. 3 ...
- node.js使用手册_权威的Node.js手册
node.js使用手册 Note: you can get a PDF, ePub, or Mobi version of this handbook for easier reference, or ...
- node.js 生成文件_如何使用Node.js在几秒钟内生成模拟数据
node.js 生成文件 介绍 (Introduction) In most of the applications, you need to have some static JSON data w ...
- 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记
最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...
- Node.js基础汇总(一):什么是Node.js,创建最简单的Node.js应用,NPM介绍,安装express模块
目录 1. 什么是Node.js? 1.1 JavaScript是什么? 1.2 Node.js 是什么? 1.3 Node.js的原理 2. 创建最简单的Node.js应用 2.1 代码示例 2.2 ...
- Node.js:海量数据大行其道的今天 node.js 在IO方面如何异步非阻塞
以其高性能,异步IO著称,当然node.js 在 stream 上的异步也非常到位. 我们一般理解的异步请求是这样的: 同时处理多件件事件 A,B,C,D,E,F,G .... 如果用.net语言去处 ...
- 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul
本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...
- node.js wechaty实现微信机器人聊天,定时发送消息
目录 1.介绍 2.插件安装运行 3.快速上手 1.介绍 本项目主要是node wechaty的一个小应用,其核心原理主要通过wechaty插件登录网页版微信接受消息进行通信以及其他功能等.这里只做了 ...
- node本地连接服务器的数据库_Linux本地连接阿里云服务器,以及下载node.js配置环境...
1.远程登录 > ssh 用户名@ip输入密码进入 2. 文件远程传输 > scp 本机文件地址 用户名@ip:远程保存的路径 > scp ./index.html root@192 ...
最新文章
- 更新maven一直在更新_不更新app,就可以一直派单了?闪送政策早知道
- nosql简答什么是最终一致性_NoSql的三大基石:CAP理论BASE最终一致性
- xargs 命令教程
- [文章摘录] Is Cloud Computing Really Ready for Prime Time (Computer, 2009)
- Maven - error in opening zip file
- 开发板ping不通Linux虚拟机的原因及解决办法
- 后台数据量太大传输慢_哪些因素会导致慢查询?
- 基于python的贪吃蛇游戏设计与实现
- 2021年汽车电子之传感器行业研究报告
- WFDB工具箱在Matlab2010b及更高版本上的安装
- 什么是外贸ERP系统?
- Cocos野兽派 | 如何创造真正的优秀游戏
- 电路交换、报文交换、分组交换三种数据交换方式的特点、优点、应用场景以及技术对比分析
- 【转】2014 IT公司校招应届生待遇大揭秘
- 我国地理信息系统产业发展前景
- 臭屁净化器——arduino实现
- Hive 正则提取英文名称和中文名称
- verilog 自动售货机状态机实现_基于Verilog语言的简单自动售货机-数电课设报告(最终版)最新版...
- Paper Note - HOLMES:基于可疑信息流的实时APT检测
- 在IT行业,学历比能力更重要吗?
热门文章
- 万万没想到 过去一年 蚂蚁森林成了联合国会议上的“网红”
- [codevs1378]选课
- CentOS7部署(Mysql) MariaDB Galera Cluster 10.1记录
- javaweb男的gulp入手实践
- 图像处理之基础---图像高效不失真缩放既卷积应用
- (android实战)第三方应用反编译并修改UI信息后,重新编译
- ajax,training my javascript!手写AJAX,用POST方法传值
- (转贴) ArcIMS初级教程(1)
- Liststring绑定到DataGridView控件
- 『TensorFlow』分布式训练_其二_单机多GPU并行GPU模式设定