知道哪个适配器用于建立套接字连接

时间:2011-08-18 18:03:38

标签: c++ sockets winsock

我有一个Visual Studio 2008 C ++应用程序,我使用套接字连接到远程TCP服务器。代码看起来基本上是这样的:

SOCKET s = socket( AF_INET, SOCK_STREAM, 0 );
addrinfo* ai = getaddrinfo( ... );
connect( s, ai->ai_addr, sizeof( sockaddr_in ) );

假设我的本地客户端有多个适配器,如何判断使用哪个本地接口进行连接?

我意识到我可以使用bind()来选择使用的适配器,我很好奇我只是让系统选择的情况。

1 个答案:

答案 0 :(得分:3)

您可以使用getsockname查找地址。

int getsockname(
  __in     SOCKET s,
  __out    struct sockaddr *name,
  __inout  int *namelen
);

struct sockaddr_in sin;
int sinlen = sizeof(sin);
memset(&sin, 0, sizeof(sin));

getsockname(s, (strict sockaddr *)&sin, &sinlen);