第三十三章 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类文档中找到。

相关推荐
七夜zippoe18 分钟前
高性能网络编程实战:用Tokio构建自定义协议服务器
linux·服务器·网络·rust·tokio
桃子不吃李子20 分钟前
简单搭建express服务器
运维·服务器·express
owCode20 分钟前
Linux中的管道
linux·运维·服务器
北亚数据恢复23 分钟前
服务器数据恢复—raid5阵列硬盘离线搞崩溃,分区数据恢复案例来袭
运维·服务器
wsx_iot24 分钟前
TCP/IP 五层协议栈
网络·网络协议·tcp/ip
neo_will_mvp25 分钟前
服务器bmc功能
linux·运维·服务器
吉普赛的歌1 小时前
【阿里云】ECS服务器重启需要注意的事项
运维·服务器·阿里云
无聊的小坏坏1 小时前
基于 TCP 线程池服务器封装 HTTP 服务器:从协议解析到适配落地
服务器·tcp/ip·http
草莓熊Lotso2 小时前
Linux 权限管理进阶:从 umask 到粘滞位的深度解析
linux·运维·服务器·人工智能·ubuntu·centos·unix
iCxhust4 小时前
windows环境下在Bochs中运行Linux0.12系统
linux·运维·服务器·windows·minix