UDP经常被用来查询-响应协议,比如DNS和DHCP。这个技术展示了如何将消息发送回客户端。已经创建了一个UDP服务来响应和请求,但是你想要将消息发送回客户端。一旦你创建了一个服务,并且它已经接收到了消息,创建了一个数据报连接返回客户端是基于传到message事件的info参数。通过连接客户端端口和IP地址发送连续消息来选择性地创建一个唯一参考。

聊天服务器对Node新手来说是典型的网络程序示例,但是这里有个小坑——它使用UDP替代TCP或http。TCP连接与UDP是不同的,而且在Node网络API设计里是很明显的。TCP连接被表示为一个双向事件流,因此发回一个消息到发送端很简单。一旦一个客户端已经连接,你能够使用client.write向它写消息。在另一方面,UDP是非面向连接的——不需要有效的连接就可以接收消息。这有一些级别相似的协议,使你能够从客户端响应数据。TCP和UDP连接使用源和目标端口。给定一个合适的网络设置,打开一个基于这个信息的客户端连接。在Node中,rinfo对象包含每个message事件,包含相关细节。图中展示了使用这个方案如何在两个客户端中传递数据流。

尽管UDP不是完全双向的,当两边在两个方向都提供一个端口号时,它可以创建双向连接。下面介绍了一个客户端-服务端程序,允许客户端通过UDP连接到一个中心服务器,并互相通信。服务端在一个数组里保存了每一个客户端,因此它能够独立地映射每一个。通过保存客户端地址和端口,你甚至能够在同一个机器运行多个客户端——在同一个电脑多次运行这个程序是安全的。

使用readline模块来处理用户输入。无论何时,一个客户端加入时,发送特殊的加入消息。当用户输入一个消息后按下回车键,便发送消息给服务器。监听其他用户的消息。获取用户的消息,并且创建一个新的buffer来作为UDP消息发送给服务器。监听客户端的新消息。结合客户端的端口号和地址来创建一个唯一的引用。如果这个客户端之前没见过,那么记录它连接的细节信息。如果消息是用尖括号包裹起来的,那么便是控制消息。发送消息给其他每一个客户端。

这个例子你够用同样的方式运行它。输入node ud server来启动一个服务,而且然后node ud client来连接一个客户端。你应该运行一个以上来工作;否则信息不会路由到任何地方。 readline模块被用来友好地捕获用户输入。就像大多数你见过的核心模块,这是基于事件的。当一行文本进入时,它会触发line事件。在消息能够被用户发送前,一个初始join消息会被发送。这只是为了让服务端知道它已经连接,服务端代码使用它来存储一个客户端独立的引用。Client构造函数内部封装了,为sendData。这就是为什么一行文本输入消息就会轻松地发送。同样,当客户端自己接收到一个消息,它将会打印到控制台,并通过创建服务器接收到一个新的提示。通过信息所使用的组合端口和远程地址,以创建一个唯一的客户。我们从rinfo对象中获得所有信息,而且在同一个机器运行多个客户端是安全的,因为端口是客户端的而不是服务端监听的(不能改变)。为了理解如何实现,重新调用UDP头,包含一个像TCP那样的源和目标端口。最后,当消息不是控制消息,每个客户端被迭代和发送消息。已发送的邮件客户端将不会收到副本。因为我们已经存储引用,以在客户端列出各rinfo对象,信息可以发送回客户端。客户端-服务端网络是http的基础。即使http使用TCP连接,从你目前能看到的协议类型来看稍有不同:它是无状态的。这意味着你需要用不同的模式来模拟它。下一节有更多详细内容讨论http客户端和服务端。

1.《如何开启一个udp服务》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《如何开启一个udp服务》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3301735.html