ESFramework 使用技巧 -- 兼容IPv6

      随着互联网越来越普及,以及物联网的兴起,IPv4地址已远远不够用,IPv6的普及将是不可避免的趋势。最新版本的ESFramework(ESFramework v4.0.10.0、ESPlus v3.2.0.0)已经增加了对IPv6的支持。

首先,要了解两个最基础的事实:

(1)通信的双方,无论是服务端与客户端之间,或是客户端与客户端之间的P2P通信,必须使用相同的协议版本 -- 要么都是IPv4,要么都是IPv6。

(2)在没有特别安装附件的情况下,有的OS可能只支持IPv4,有的可能只支持IPv6,有的即支持IPv4也支持IPv6。可以通过Socket类的OSSupportsIPv6和OSSupportsIPv4属性来作判断。

1.服务端

      基于ESFramework的服务端程序若需同时支持IPv4和IPv6,需要保证两点:

(1)服务器系统的网卡必需绑定至少一个IPv4地址和至少一个IPv6地址。

(2)IRapidServerEngine的IPAddressBinding属性设置为null。

      当然,如果想让服务端仅仅对IPv6的客户端提供服务,可以将IPAddressBinding设置为网卡的IPv6地址;同理,如果想让服务端仅仅对IPv4的客户端提供服务,可以将IPAddressBinding设置为网卡的IPv4地址。

2.客户端

      基于ESFramework的客户端程序在升级兼容IPv6时,要稍作改动。

      我们现在假设服务端程序已经兼容了IPv6,并且其提供服务的IPv4地址为192.168.0.104,IPv6地址为fe80::14d8:a209:89e6:c162%14。

      那么基于ESFramework的客户端在与服务端建立连接之前,要看本地OS对IPv4和IPv6的支持情况:

(1)如果本地OS仅支持IPv4,或者同时支持IPv4和IPv6,那么简单地,就让其连接到服务器的IPv4地址。

(2)如果本地OS仅支持IPv6,那么,就让其连接到服务器的IPv6地址。

      示例代码如下所示: 

    RapidPassiveEngine rapidPassiveEngine = new RapidPassiveEngine();
    if (Socket.OSSupportsIPv4)
    {
        LogonResponse logonResponse = rapidPassiveEngine.Initialize("userID", "password", "192.168.0.104", 9900, null);
    }
    else if (Socket.OSSupportsIPv6)
    {
        LogonResponse logonResponse = rapidPassiveEngine.Initialize("userID", "password", "fe80::14d8:a209:89e6:c162%14", 9900, null);
    }
    else
    {
        throw new Exception("当前OS既不支持IPv4,也不支持IPv6。");
    }

 

-----------------------------------------------------------------------------------------------------------------------------------------------  

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

立即咨询 

站内搜索

ESFramework 通信框架

详细说明

SDK下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

详细说明

客户端下载

傲瑞实用组件

SDK下载

NPush 消息推送组件

StriveEngine 轻量级的通信引擎

MFile 语音视频录制组件

MCapture 语音视频采集组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

傲瑞组件 FAQ

授权

授权流程

产品授权说明

产品选购指南

授权SDK使用说明

其它

SDK使用技巧

联系我们

电话:027-87638960

Q Q:168757008

邮件:master@oraycn.com