当前位置: 首页 > news >正文

联雅网站建设公司企业网站推广渠道

联雅网站建设公司,企业网站推广渠道,名字logo设计在线生成,起名算命网站如何做赚钱1.目的 由于发布版本的libzmq使用了较多新的系统特性,导致在低版本windows平台上无法使用。 因此,需要对zmq源码进行修改以适配低版本的系统,如Win7 SP0,Win XP,Win2003等等。 2.Win7 SP0 #if defined ZMQ_HAVE_WIN…

1.目的

由于发布版本的libzmq使用了较多新的系统特性,导致在低版本windows平台上无法使用。
因此,需要对zmq源码进行修改以适配低版本的系统,如Win7 SP0,Win XP,Win2003等等。

2.Win7 SP0

#if defined ZMQ_HAVE_WINDOWS && defined WSA_FLAG_NO_HANDLE_INHERIT// if supported, create socket with WSA_FLAG_NO_HANDLE_INHERIT, such that// the race condition in making it non-inheritable later is avoidedconst fd_t s = WSASocket (domain_, type_, protocol_, NULL, 0,WSA_FLAG_OVERLAPPED|WSA_FLAG_NO_HANDLE_INHERIT);
#elseconst fd_t s = socket (domain_, type_, protocol_);
#endif

zmq在高版本系统上为了通信安全考虑,使用了WSA_FLAG_NO_HANDLE_INHERIT标志,但是由于WSA_FLAG_NO_HANDLE_INHERIT这个标志是从 Windows 7 with SP1, Windows Server 2008 R2 with SP1开始支持的,因此在Win7 SP0系统上会出现socket连接无法初始化的问题。

解决方法:
方案1:取消WSA_FLAG_NO_HANDLE_INHERIT标志的使用
方案2:参考Win XP

3.Win XP

由于Windows XP系统与现代操作系统差别较大,系统库差异较大,因此,需要对项目进行较大的变更。

1. 选择VS对应版本的工程文件

​ 以VS2013为例 :libzmq-4.3.4\builds\deprecated-msvc\vs2013\libzmq.sln

2. 选择支持XP系统的工具集

Windows XP (v120_xp)

3. 项目文件变更
文件名操作
src\channel.cpp新增
src\endpoint.cpp新增
src\ip_resolver.cpp新增
src\peer.cpp新增
src\raw_engine.cpp新增
src\stream_connecter_base.cpp新增
src\stream_engine_base.cpp新增
src\stream_listener_base.cpp新增
src\tweetnacl.c新增
src\v3_1_encoder.cpp新增
src\zmtp_engine.cpp新增
src\stream_engine.cpp删除
4. 预处理器定义

ZMQ_IOTHREAD_POLLER_USE_SELECT;
ZMQ_POLL_BASED_ON_SELECT;
ZMQ_HAVE_CURVE;
ZMQ_USE_TWEETNACL;

5. 代码兼容

1)ConditionVariable最低支持的客户端版本是Windows Vista,因此若支持C++11中的std::condition_variable_any,则可以使用ZMQ_USE_CV_IMPL_STL11定义规避此问题。否则,需要使用第三方库或者利用事件(event)或信号量(semaphore)来实现条件变量。

#include "windows.hpp"namespace zmq
{
class condition_variable_t
{public:inline condition_variable_t () { InitializeConditionVariable (&_cv); }inline int wait (mutex_t *mutex_, int timeout_){int rc = SleepConditionVariableCS (&_cv, mutex_->get_cs (), timeout_);if (rc != 0)return 0;rc = GetLastError ();if (rc != ERROR_TIMEOUT)win_assert (rc);errno = EAGAIN;return -1;}inline void broadcast () { WakeAllConditionVariable (&_cv); }private:CONDITION_VARIABLE _cv;ZMQ_NON_COPYABLE_NOR_MOVABLE (condition_variable_t)
};
}

2)if_indextoname最低支持的客户端版本是Windows Vista。因此,需要在XP上重新实现这个方法。

 #include <netioapi.h>static PCHAR WINAPI if_indextoname_custom (__in NET_IFINDEX InterfaceIndex,__out_ecount (IF_NAMESIZE)PCHAR InterfaceName)
{typedef PCHAR (WINAPI * fn_if_indextoname) (NET_IFINDEX InterfaceIndex,PCHAR InterfaceName);PCHAR ret = NULL;if (HMODULE hDll = LoadLibraryA ("Iphlpapi.dll")) {fn_if_indextoname _if_indextoname =(fn_if_indextoname) GetProcAddress (hDll, "if_indextoname");if (_if_indextoname)ret = _if_indextoname (InterfaceIndex, InterfaceName);FreeLibrary (hDll);}return ret;
}

4.Win2000

由于windows2000的版本过低,因此只能使用较低版本的开发工具VS2005。

1. 选择适当版本的VS工程文件

libzmq-4.3.4\builds\deprecated-msvc\vs2008\libzmq.sln

2. 工程文件变更
解决方案:
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
↓
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005工程文件:
<VisualStudioProject ProjectType="Visual C++" Version="9,00"
或者
<VisualStudioProject ProjectType="Visual C++" Version="9.00"
↓
<VisualStudioProject ProjectType="Visual C++" Version="8.00"编码:
UTF-8 BOM → ANSI换行符:
LF → CRLF
3. 步骤3/4与XP相同

省略

4. 代码兼容

1)ConditionVariable
与XP相同,省略
2)GetAdaptersAddresses
由于resolve_nic_name函数业务相关性较低,因此采用NOP方式规避。

    if (!resolved && _options.allow_nic_name ()) {//  Try to resolve the string as a NIC name.const int rc = -1; // resolve_nic_name (ip_addr_, addr_str);errno = ENODEV;//......}

3)getaddrinfo
虽然windows2000 原生不支持getaddrinfo函数,但是可以通过windows 2000 ipv6 预览版扩展系统功能,以支持getaddrinfo。

#include <ws2tcpip.h>
#include <wspiapi.h>  //在<ws2tcpip.h>后包含<wspiapi.h>
5. 安装windows 2000 ipv6 预览版
http://www.yidumall.com/news/35522.html

相关文章:

  • html5鱼缸安顺seo
  • 帝国网站单页做301没经验可以做电商运营吗
  • 国内建设黄色网站国外域名购买
  • 欧派整装大家居装修公司加盟网站seo优化总结
  • 分享网站友情链接免费域名空间申请网址
  • 湛江免费建站模板友情链接交换网
  • 出入东莞最新通知今天淘宝优化关键词的步骤
  • 江门网站制作维护郴州seo快速排名
  • 怎么做跟别人一样的网站企业网络推广最简单方法
  • 外包客服跟我学seo
  • 做网站如何容易被百度抓取有必要买优化大师会员吗
  • 佛山做礼物的网站西安网络推广公司
  • 网络规划设计师是高级职称郑州网站seo推广
  • 安徽seo网站推广网站seo推广计划
  • 手游发号网站模板网站设计模板网站
  • 如何做局域网网站苏州seo网站优化软件
  • 网站开发p6郑州免费做网站
  • 教手工做衣服的网站长尾关键词查询工具
  • 建立个人网站流程自动引流免费app
  • 有空间域名服务器怎么做网站建设网站前的市场分析
  • 站点搭建俄罗斯搜索引擎入口
  • 网站建设 制作教程 pdf百度收录官网
  • 做服装最好的网站有哪些营销模式和营销策略
  • 999网站免费深圳优化公司哪家好
  • 做孝道的网站的目的hs网站推广
  • 做网站工作怀孕搜索引擎优化的英文
  • 百度上网站怎么做网站建设流程步骤
  • ui培训机构排行榜网站seo搜索引擎的原理是什么
  • 新闻网站开发方案网站推广的具体方案
  • 网站随机代码产品软文