CSADDR_INFO 结构 (ws2def.h)

CSADDR_INFO 结构包含套接字、网络服务或命名空间提供程序的 Windows 套接字地址信息。

语法

typedef struct _CSADDR_INFO {
  SOCKET_ADDRESS LocalAddr;
  SOCKET_ADDRESS RemoteAddr;
  INT            iSocketType;
  INT            iProtocol;
} CSADDR_INFO, *PCSADDR_INFO, *LPCSADDR_INFO;

成员

LocalAddr

类型: SOCKET_ADDRESS

Windows 套接字本地地址。

在客户端应用程序中,将此地址传递给 绑定 函数以获取对网络服务的访问权限。

在网络服务中,将此地址传递给 绑定 函数,以便将服务绑定到相应的本地地址。

RemoteAddr

类型: SOCKET_ADDRESS

Windows 套接字远程地址。

此远程地址有多种用途:

  • 可以使用此远程地址通过 connect 函数连接到服务。 如果应用程序执行涉及面向连接的协议的 发送/接收 操作,这非常有用。
  • 通过无连接 (数据报) 协议进行通信时,可以将此远程地址与 sendto 函数配合使用。 如果使用无连接协议(如 UDP),则 sendto 通常是将数据传递到远程系统的方式。

iSocketType

类型: INT

Windows 套接字的类型。 套接字类型的可能值在 Winsock2.h 头文件中定义。

下表列出了 Windows 套接字 2 支持的可能值:

Value 含义
SOCK_STREAM
流套接字。 这是一种以字节流的形式发送数据的协议,没有消息边界。 此套接字类型提供具有 OOB 数据传输机制的连续、可靠、双向、基于连接的字节流。 此套接字类型对 Internet 地址系列 (AF_INET 或AF_INET6) 使用传输控制协议 (TCP) 。
SOCK_DGRAM
数据报套接字。 此套接字类型支持数据报,这些数据报是固定 (通常较小) 最大长度的无连接、不可靠缓冲区。 此套接字类型对 Internet 地址系列 (AF_INET 或AF_INET6) 使用用户数据报协议 (UDP) 。

服务使用 recvfrom 函数获取数据报。 listenaccept 函数不适用于数据报。

SOCK_RDM
可靠的消息数据报套接字。 此套接字类型保留数据中的消息边界。 此类型的一个示例是 Windows 中的实用常规多播 (PGM) 多播协议实现,通常称为 可靠多播编程
SOCK_SEQPACKET
已排序的数据包流套接字。 此套接字类型提供基于数据报的伪流数据包。

iProtocol

类型: INT

使用的协议。 协议参数的可能选项特定于指定的地址系列和套接字类型。 可能的值在 Winsock2.hWsrm.h 头文件中定义。

在针对 Windows Vista 及更高版本发布的 Windows SDK 上,头文件的组织已更改,此参数可以是 Ws2def.h 头文件中定义的 IPPROTO 枚举类型的值之一。 请注意, Ws2def.h 头文件会自动包含在 Winsock2.h 中,永远不应直接使用。

下表列出了 协议 的常见值,尽管许多其他值是可能的。

协议 含义
IPPROTO_TCP
6
传输控制协议 (TCP) 。 当地址系列 AF_INETAF_INET6 并且 iSocketType 成员 SOCK_STREAM时,这是一个可能的值。
IPPROTO_UDP
17
用户数据报协议 (UDP) 。 当地址系列 AF_INETAF_INET6iSocketType 成员 SOCK_DGRAM时,这是一个可能的值。
IPPROTO_RM
113
可靠多播的 PGM 协议。 当地址系列AF_INET且 iSocketType 成员SOCK_RDM时,这是一个可能的值。 在针对 Windows Vista 及更高版本发布的 Windows SDK 上,此值也称为 IPPROTO_PGM

注解

GetAddressByName 函数使用CSADDR_INFO结构获取 Windows 套接字地址信息。

使用 SO_BSP_STATE 套接字选项调用的 getsockopt 函数检索指定套接字的CSADDR_INFO结构。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 ws2def.h (包括 Nspapi.h)

另请参阅

GetAddressByName

SOCKET_ADDRESS

SO_BSP_STATE

bind

connect

getsockopt

recv

send

sendto