Ca°pd0 第6章地址家族和名字解析 111 下载 f irdaAttriboctetSeq u_long Len u_long Charset u_char UsrStr[IAS_MAX_USER STRING] irdaAttribUsrStr; f irdaAttribute WINDOWS_IAS_QUERY, *PWINDOWS.IAS_ QUERY FAR*LPWINDOWS_ IAS QUERY typedef struct_WCE_IAS_QUERY u char irdaclassName [61] char irdaAttribName [61 u_short irdaAttribType union int irdaAttriblnt struct int u__char 0ctetseq[1] u_char Reserved[3] f irdaAttriboctetSeq struct int char Char Set u_char UsrStr[l]: u_char Reserved[2] b irdaAttribUsrstr b irdaAttribute I WCE IAS_QUERY, *PWCEIAS QUERY 大家可看到,除了特定字符数组的长度不同之外,这两个结构的格式是差不多的 要对特定服务的LSAP-SEL数有多少进行查询,很简单:把 irda classname字段设为LSAP SEL的属性字串,即 IrDA: IrLMP: LsapSel,然后,把 irdaAttribute name字段设成准备查询的那 服务名。除此以外,还必须用范围内的有效设备来设置 irdadeviceID字段。 625创建套接字 红外线套接字的创建很简单。几乎不需要任何选项,这是因为 IrSock只支持面向连接的数 据流。下面的代码说明了如何利用 socket或 WSASocket调用来建立红外线套接字。由于 Winsock1.1的限制,必须采用 Windows CE的 socket s socket(AF_IRDA, SOCK_STREAM, 0): S= WSASocket(aF IRDA, SoCK STREAM, 0, NULL, 8 WSA FLAG OVERLAPPED) 如果不想因循守旧,可把 IRDA PROTO SICK STREAM当作上面任何一个函数的协议参 数投递出去。但系统不需要这个协议参数,因为传输目录中只有一个地址家族 AF IRDA条目。第6章计地址家族和名字解析计计111 下载 大家可看到,除了特定字符数组的长度不同之外,这两个结构的格式是差不多的。 要对特定服务的L S A P - S E L数有多少进行查询,很简单:把 i r d a C l a s s N a m e字段设为L S A P - S E L的属性字串,即I r D A : I r L M P : L s a p S e l,然后,把i r d a A t t r i b u t e N a m e字段设成准备查询的那 个服务名。除此以外,还必须用范围内的有效设备来设置 i r d a D e v i c e I D字段。 6.2.5 创建套接字 红外线套接字的创建很简单。几乎不需要任何选项,这是因为 I r S o c k只支持面向连接的数 据流。下面的代码说明了如何利用 s o c k e t或W S A S o c k e t调用来建立红外线套接字。由于 Winsock 1.1的限制,必须采用Windows CE的s o c k e t。 如果不想因循守旧,可把 I R D A _ P R O TO _ S I C K _ S T R E A M当作上面任何一个函数的协议参 数投递出去。但系统不需要这个协议参数,因为传输目录中只有一个地址家族 A F _ I R D A条目