手机版

nodejs实现套接字服务功能的详细说明

时间:2021-08-31 来源:互联网 编辑:宝哥软件园 浏览:

本文通过一个实例来说明nodejs如何实现套接字服务功能。分享给大家参考,如下:

首先,什么是插座

1.套接字允许一个进程通过一个IP地址和端口与另一个进程通信。当您实现在同一服务器上运行的两个不同进程之间的进程间通信或访问在完全不同的服务器上运行的服务时,套接字非常有用。节点提供的网络模块允许您创建一个套接字服务器和一个可以连接到套接字服务器的客户端。

2.套接字位于HTTP层下,提供服务器之间的点对点通信。套接字使用套接字地址,套接字地址是IP地址和端口的组合。在套接字连接中,有两种类型的点:一种是服务器,它监听连接;一个是客户端,它打开到服务器的连接。服务器和客户端都需要唯一的IP地址和端口组合。

3.套接字是HTTP模块的底层结构。如果不需要处理get、post等web请求,只需要点对点传输数据,那么使用socket可以为你提供轻量级的解决方案和更多的控制。

第二,网。套接字对象

1.socket对象是在socket服务器和客户端socket上创建的,允许数据在它们之间来回读写。在套接字客户端中,当您调用net.connect()或net.createConnection()时,套接字对象是在内部创建的。该对象表示到服务器的套接字连接。使用套接字对象监控连接,向服务器发送数据,并处理来自服务器的响应。在套接字服务器上,当客户端连接到服务器时,创建套接字对象并将其传递给连接事件处理程序。此对象表示到客户端的套接字连接。NodeJS中有三种套接字:TCP、UDP和Unix域套接字。本文主要介绍了NodeJS中TCP的基本编程知识。

2.要创建套接字对象,可以使用以下方法:

//第一种方法,通过一个options参数var socket client=net . connect(options,[connection listener]);var socket client=net . create connection(选项,[connectionListener]);//第二种方法是接受端口和主机值作为直接参数var socket client=net . connect(port、[host]、[connection listener]);var SocketClient=net . CreateConnection(端口、[主机]、[连接侦听器]);//第三种方法是接受指定文件系统位置的path参数,这是Unix Socket在创建Socket对象时使用的。var SocketClient=net.connect(路径,[connectionListener]);var socket client=net . createconnection(路径,[connectionListener]);无论使用哪一个,都将返回一个Socket对象。唯一的区别是第一个参数被接受,最后一个参数是当连接打开到服务器时执行的回调函数。无论你使用net.connect还是net.createConncetion,它们的工作方式完全相同。

那么对于第一个参数,指定的选项是:

端口:客户端应该连接的端口。此选项是必需的。主机:客户端应该连接到的服务器的域名或IP地址。默认值为localhostlocalAddress:客户端应该为网络连接绑定的本地IP地址。一个布尔值。如果为真,意味着当套接字的另一端发送FIN数据包时,套接字不会自动发送FIN数据包,从而保持半双工流打开。默认值为假

3.创建套接字对象后,它会在连接到服务器的生命周期中提供几个事件,如下所示:

连接:当与服务器的连接成功建立时发送。回调函数不接受任何参数数据:在套接字上接收数据时发送。如果没有连接数据时间处理器,数据可能会丢失。回调函数必须接受缓冲区对象作为参数,该对象包含从套接字读取的数据块。End:当服务器通过发送FIN终止连接时发送。回调函数不接受任何参数超时:它是在与服务器的连接由于不活动而超时时发送的。Drain:当写缓冲区变空时发出。您可以使用此事件来拦截写入套接字的数据流。回调函数不接受任何参数错误:当套接字连接上出现错误时发出。回调函数应该接受错误的唯一参数。关闭:当插座完全关闭时发出。它可能被end()方法关闭或由于错误而关闭。回调函数不接受任何参数

4.Socket对象还提供了几个属性,可以通过访问这些属性来获取对象的信息:

缓冲区当前缓冲并等待写入套接字远程地址套接字连接到的远程服务器的IP地址远程端口端口本地地址套接字连接的远程客户端的本地IP地址套接字连接的远程客户端的本地端口字节由套接字写入的字节

三.净。服务器对象

你可以使用网络。对象来创建一个TCP套接字服务器,并监听到它的连接。您将能够读写数据。

若要以独占方式创建服务器,请使用net.createServer()方法:

Net。createServer ([options],[connectlistener]),其中options是一个对象,指定创建套接字服务器对象时要使用的选项,例如allowHalfOpen,它可以保持半双工流打开,默认值为false。ConnectLlistener是连接事件的回调函数,在收到连接时执行。

示例:

var net=required(' net ');var HOST=' 127 . 0 . 0 . 1 ';var PORT=6969//创建一个TCP服务器实例,调用listen函数开始监听指定的端口。//传入net.createServer()的回调函数将用作“连接”事件的处理程序。//在每个“连接”事件中,这个回调函数接收的socket对象是唯一的net。createserver(function(sock){//我们得到一个连接——这个连接自动与一个socket对象控制台相关联。log ('connected:' sock。远程地址“:”短袜。remote port);//为此套接字实例添加一个“data”事件处理程序函数sock.on ('data ',function(data){ console . log(' data ' sock . remote address ' : ' data);//发回数据,客户端会收到服务器发来的数据sock . write(‘你说的‘数据’);});//为此套接字实例添加一个“close”事件处理程序函数sock . on(‘close’,函数(数据){ console . log(‘closed :’sock . remote address’‘sock . remote port’);});}).倾听(PORT,HOST);console.log('服务器侦听' HOST ': '端口);服务器也可以以稍微不同的方式接受TCP连接,即显式处理“连接”事件:

var server=net . CreateServer();server.listen(PORT,HOST);console.log('服务器正在侦听' server.address()。地址“:”server . address()。港口);server.on('connection ',function(sock){ console . log(' connected : ' sock . remote address ' : ' sock . remote port);//其他内容同上例});以上两个例子只是写法不同,没有本质区别。

创建一个TCP客户端

现在让我们创建一个TCP客户端来连接到新创建的服务器。客户端向服务器发送一系列消息,并在收到服务器的反馈后关闭连接。下面的代码描述了这个过程。

版权声明:nodejs实现套接字服务功能的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。