第三十三章 UDP 客户端 服务器通信 - IPv4 和 IPv6

文章目录

  • [第三十三章 UDP 客户端 服务器通信 - IPv4 和 IPv6](#第三十三章 UDP 客户端 服务器通信 - IPv4 和 IPv6)

第三十三章 UDP 客户端 服务器通信 - IPv4 和 IPv6

UDP 支持 IPv4IPv6 互联网协议。由于这些协议不兼容,服务器和客户端都必须使用相同的Internet协议,否则传输将失败。

IPv4 地址具有以下格式。 n0255 范围内的十进制整数:

java 复制代码
n.n.n.n

可以将 IPv4 协议指定为"0.0.0.0" 。

IPv6 地址具有以下完整格式。 h是一个具有四个十六进制数字的十六进制数:

java 复制代码
h:h:h:h:h:h:h:h

通常,IPv6 地址的缩写方式是消除前导零并用双冒号 (::) 替换连续的零部分; IPv6 地址中只能使用一个双冒号。通过使用 IPv4 缩写规则,可以将 IPv6 协议指定为"::" (意味着所有 8h部分的值为 0000)。

建立互联网协议:

  • 客户端必须在 %New() 方法中建立 IPv4IPv6。默认为 IPv4
  • 这必须与GetHostAddr()方法中指定并在Send()方法中提供(以二进制形式)的 IPv4IPv6 协议匹配。

以下是 IPv4 传输:

java 复制代码
Server
 SET sobj=##class(%Net.UDP).%New(3001,"127.0.0.1")



  SET inmsg=sobj.Recv() 
java 复制代码
Client
 SET cobj=##class(%Net.UDP).%New()   /* the default is IPv4 */
 SET bhost=##class(%Net.UDP).GetHostAddr("127.0.0.1")
 SET outmsg="this is the message to send"
 WRITE cobj.Send(outmsg,bhost,3001) 

以下是 IPv6 传输:

java 复制代码
Server
 SET x=##class(%SYSTEM.INetInfo).IsIPV6Enabled()
 IF x=1 {
    SET sobj=##class(%Net.UDP).%New(3001,"::1")



  SET inmsg=sobj.Recv() }
  ELSE {WRITE "IPv6 not enabled" } 
java 复制代码
Client
 SET cobj=##class(%Net.UDP).%New(0,"::")
 SET bhost=##class(%Net.UDP).GetHostAddr("::1")
 SET outmsg="this is the message to send"
 WRITE cobj.Send(outmsg,bhost,3001) 

处理主机地址的方法可在%SYSTEM.INetInfo类文档中找到。

相关推荐
菜菜艾6 小时前
基于llama.cpp部署私有大模型
linux·运维·服务器·人工智能·ai·云计算·ai编程
重生的黑客6 小时前
Linux开发工具:条件编译、动静态库与 make/makefile 入门
linux·运维·服务器
minji...7 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
航Hang*7 小时前
VMware vSphere 云平台运维与管理基础——第2章(扩展):VMware ESXi 5.5 安装、配置与运维
运维·服务器·github·系统安全·虚拟化
SPC的存折8 小时前
MySQL 8组复制完全指南
linux·运维·服务器·数据库·mysql
运维行者_8 小时前
OpManager MSP NetFlow Analyzer集成解决方案,应对多客户端网络流量监控挑战
大数据·运维·服务器·网络·数据库·自动化·运维开发
dashizhi20159 小时前
共享文件禁止拖动本地磁盘、共享文件禁止另存为、禁止打印共享文件、禁止复制共享文件的方法
运维·服务器·网络·安全·电脑
IMPYLH9 小时前
Linux 的 nproc 命令
linux·运维·服务器·bash
万山寒12 小时前
linux日志查询,查找某个关键词后面的内容
linux·运维·服务器
小贾要学习12 小时前
【Linux】TCP网络通信编程
linux·服务器·网络·c++·网络协议·tcp/ip