有没有办法规定由win32 winsock返回的网络接口的顺序
WSAIoctl
函数的
SIO_GET_INTERFACE_LIST
功能?
背景:
我们有一个异类CORBA系统,其中运行Windows上的ace/tao CORBA实现的名称服务注册了ace/tao服务,使用iiop.net CORBA实现的客户机需要使用这些服务。基于iiop.net的客户端位于单独的Windows计算机上。ace/tao机器有多个网络接口(客户机只能访问其中一个),因此有多个IP地址。
iiop.net客户端可以连接到NameService并检索到它需要使用的注册服务器CORBA对象的代理,但是当它尝试使用代理时,它会抛出异常。
基于花在调试上的时间太长,我们得出的结论是,问题在于iiop.net只尝试连接到名称服务在请求服务时返回的corba ior字符串中的第一个IP地址。IOR字符串是对对象的描述,包括其IP地址。大多数CORBA客户机将尝试使用IOR字符串中的所有地址与服务器对象连接,但看起来iiop.net并没有这样做。
生成IOR字符串的ace/tao代码使用winsock
WSAIOCTL
带控制代码的命令
SIO获取接口列表
返回框中的网络接口列表,然后将它们全部添加到IOR字符串中。问题是,第一个IP地址不在iiop客户端使用的网络上,因此当iiop.net客户端尝试使用该IP地址连接到服务器对象时,它显然会失败,并且从不尝试使用正确的IP地址。其他CORBA客户机(如ace/tao)会尝试所有IP地址,并在此配置中工作。
因为我不是一个网络/corba上帝,所以尝试改变ace/tao或iiop.net是不现实的,我们有充分的理由在这个系统中有两个独立的网络,但是如果第一个,默认IP地址返回
WSAIOCtl
如果是客户机需要的地址,这将解决问题,因为该IP地址将成为IOR字符串中的第一个IP地址,iiop.net将成功使用该IP地址。那么,是否有可靠的方法
WSAIOCTL
以不同的顺序返回网络接口?不幸的是,我没有看到有关这方面的任何文档。
谢谢,
戴夫