【课程笔记】Node.js:Socket通信

一、建立监听服务(接收客户端响应,并返回给客户端数据)

有状态:客户端和服务端直接可以进行多个回合的通信

无状态:客户端和服务端一般只进行一个回合的通信

require('net');

demo1 创建监听服务,用来接收客户端的响应,并返回给客户端数据

注意:创建服务端Socket,要指定一个端口号(Port)

代码如下:

var net = require('net');
var server = net.createServer(function(socket){
    console.log('客户端与服务器端连接已经建立');
    //接收客户端数据,并向客户端返回数据
    socket.on('data', function(data){
        console.log(data.toString());  //data是buffer,必须转换
        socket.write('hello');  //服务端接收到客户端数据之后返回给客户端"hello"
    });
    socket.on('end', function(){
        console.log('连接中断');
    });
});
server.listen(4567, 'localhost', function(){   //指定localhost,只有本地能访问
    address = server.address();
    console.log('被监听的地址信息为:%j', address);
});

运行结果:

(1)先启动 socket_server.js:node socket_server.js

(2)另开一个窗口,输入:telnet 127.0.0.1 4567,连接服务器

(3)客户端连接服务器成功后,输入:I am Chinese,回车,发送消息给客户端

(4)最终,服务端显示客户端的I am Chinses消息,并返回hello给客户端,客户端显示服务器的响应消息:hello

二、建立客户端Socket

net.connect(port, host, callback

代码如下:

服务器端同上,(可不指定本地ip,即server.listen中去掉localhost)

客户端代码如下:

var net = require('net');
var client = net.connect('4567', 'localhost', function(){
    console.log('已经与服务器连接');
    client.write('Yes\r\n');
});
client.on('data', function(data){
    console.log(data.toString());
    client.end();
});
client.on('end', function(){
    console.log('客户端连接中断');
});

运行结果:

(1)先启动server:node socket_server.js

(2)再另开一个窗口,启动client:node socket_client.js

三、使用服务端Socket建立HTTP服务器

HTTP/1.1 OK\r\n

Content-Type: text/html\r\n

Content-length

demo  httpserver.js

var net = require('net');
var server = net.createServer(function(socket){
    socket.on('data', function(data){
        console.log(data.toString());
        socket.write("HTTP/1.1 OK\r\n");
        socket.write("Content-Type:text/html\r\n");
        var s = "<h1>Hello World</h1>"
        socket.write("Content-length:" + s.length + "\r\n\r\n");
        socket.end(s);
    });
    socket.on('end', function(){
        console.log('连接中断');
    });
});
server.listen(4567, 'localhost', function(){
    address = server.address();
    console.log('被监听的地址信息为%j', address);
});

运行结果:

 

 

四、建立UDP服务端和客户端

UDP和TCP

有关dgram模块

demo 

udpserver.js

var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on("message", function(msg, info){
    console.log("msg:" + msg + ' from ' + info.address + ":" + info.port);
});
server.on("listening", function(){
    var addr = server.address();
    console.log('server listening:' + addr.address + ":" + addr.port);
});
server.bind(12345, 'localhost');

udpclient.js

var dgram = require('dgram');
var message = new Buffer("Node.js高级培训");
var client = dgram.createSocket("udp4");
client.send(message, 0, message.length, 12345, "localhost", function(err, bytes){
    client.close();
});

运行结果:

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马Node.js学习笔记是一本关于Node.js的学习资料,其中包含了关于模块化规范的内容。模块化规范是对代码进行模块化的拆分与组合时需要遵守的规则。在Node.js中,模块可以分为内置模块、自定义模块和第三方模块。内置模块是由Node.js官方提供的,例如fs、path、http等。自定义模块是用户创建的每个.js文件,可以通过require方法加载。第三方模块是由第三方开发的模块,需要先下载后才能使用。在每个.js自定义模块中都有一个module对象,它存储了和当前模块有关的信息。注意,在同一个模块中不要同时使用exports和module.exports。在Node.js中,加载某个模块实际上是加载该模块的module.exports属性。npm是Node.js中的包管理工具,可以用于下载和管理第三方模块,而第三方模块也被称为包。总之,黑马Node.js学习笔记提供了关于Node.js模块化规范的详细解释和使用方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [黑马程序员node.js学习笔记](https://blog.csdn.net/weixin_50523986/article/details/129937301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值