正在加载图片...
110 第二部分 Winsock API China-pub.com 下载 dwRet getsockopt(sock, SOL_IRLMP, I RLMP_ENUMDEVICES (char *)&delist, &dwListLen) 在向 getsockopt调用投递一个DEⅤ CELIST结构之前,别忘了把 num Device字段设成0 次成功列举会把 num Device字段设成一个大于0的值,并把 Device字段中 IRDA DEVICE INFO 结构数量设为前一个值。同时,在实际应用中,为检查新使用的设备,可能会多次执行 getsockopt举个例子来说,一个很好的例子就是试着进行五次或少于五次的红外线设备查找 方法很简单:在未成功列举之后,利用短期调用 Sleep,把该调用置入循环即可。 现在,大家已知道如何列举红外线设备,创建一个客户机或服务器就更简单了。同级的 服务器端更为简单,因为它像一个“普通”服务器。也就是说,不需要额外的步骤。创建 IrSock服务器的常见步骤如下: 1)建立一个地址家族 AF IRDA套接字和套接字类型 SOCK STREAM 2)用服务器的服务名填写一个 SOCKADDR IRDA结构 3)利用套接字句柄和 SOCKADDR IRDA结构调用bind 4)利用套接字句柄和 backlog边限调用 lister 5)为接入客户机锁定一个 acceptt调用 建立客户机的步骤稍微有些复杂,因为必须先把红外线设备列举出来。建立 IrSock客户 机所需步骤如下: 1)建立地址家族 AF IRDA套接字和套接字类型SOCK- STREAM 2)调用有 IRLMP ENUM DEⅥCES选项的 getsockopti函数,列举所有可用的红外线设备 3)针对返回的每个设备,利用设备ID和准备连接的服务名填写一个 SOCKADDR_IRDA 结构。 4)利用套接字句柄和 SOCKADDR IRDA结构,调用 connect函数。针对步骤3)中所填的 结构,重复步骤4),直到连接成功。 624查询As 要知道特定服务是否在特定的设备上运行,有两种方法。第一种是真正与特定服务连 接:另一种是向IAS查询特定的服务名。两种方法都要求列举红外线设备,然后对每一个设备 进行查询直到达到目的或所有的设备都查完。执行查找是调用带有 IRLMP IAS_ QUERY选项 的 getsockopt函数来完成的。再次提醒大家注意,IAS_ QUERY结构有两个,一个针对 indows98和 Windows2000,另一个针对 Windows Ce。各结构的格式如下 typedef struct_WINDOWS_IAS_QUERY u_char irdaDeviceID[4] char irdaclassName[IAS_MAX_ClaSSNaMe] char irdaAttri bName[IAS_MAX_ATTRIBNAME] u_long irdaAttribType: LONG irdaAttribint struct u_char octetseq[IAS_MAX_OCTET-STRING]在向g e t s o c k o p t调用投递一个D E V I C E L I S T结构之前,别忘了把n u m D e v i c e字段设成0。一 次成功列举会把n u m D e v i c e字段设成一个大于0的值,并把D e v i c e字段中I R D A _ D E V I C E _ I N F O 结构数量设为前一个值。同时,在实际应用中,为检查新使用的设备,可能会多次执行 g e t s o c k o p t。举个例子来说,一个很好的例子就是试着进行五次或少于五次的红外线设备查找。 方法很简单:在未成功列举之后,利用短期调用 S l e e p,把该调用置入循环即可。 现在,大家已知道如何列举红外线设备,创建一个客户机或服务器就更简单了。同级的 服务器端更为简单,因为它像一个“普通”服务器。也就是说,不需要额外的步骤。创建 I r S o c k服务器的常见步骤如下; 1) 建立一个地址家族A F _ I R D A套接字和套接字类型S O C K _ S T R E A M。 2) 用服务器的服务名填写一个 S O C K A D D R _ I R D A结构。 3) 利用套接字句柄和S O C K A D D R _ I R D A结构调用b i n d。 4) 利用套接字句柄和b a c k l o g边限调用l i s t e n。 5) 为接入客户机锁定一个a c c e p t调用。 建立客户机的步骤稍微有些复杂,因为必须先把红外线设备列举出来。建立 I r S o c k客户 机所需步骤如下: 1) 建立地址家族A F _ I R D A套接字和套接字类型S O C K - S T R E A M。 2) 调用有I R L M P _ E N U M _ D E V I C E S选项的g e t s o c k o p t函数,列举所有可用的红外线设备。 3) 针对返回的每个设备,利用设备 I D和准备连接的服务名填写一个 SOCKADDR_ IRDA 结构。 4) 利用套接字句柄和S O C K A D D R _ I R D A结构,调用c o n n e c t函数。针对步骤3)中所填的 结构,重复步骤4),直到连接成功。 6.2.4 查询IAS 要知道特定服务是否在特定的设备上运行,有两种方法。第一种是真正与特定服务连 接;另一种是向I A S查询特定的服务名。两种方法都要求列举红外线设备,然后对每一个设备 进行查询直到达到目的或所有的设备都查完。执行查找是调用带有 I R L M P _ I A S _ Q U E RY选项 的g e t s o c k o p t函数来完成的。再次提醒大家注意, I A S _ Q U E RY结构有两个,一个针对 Windows 98和Windows 2000,另一个针对Windows CE。各结构的格式如下: 110计计第二部分附Winsock API 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有