2011-08-18 59 views
2

我有一个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()来选择使用的适配器,我很好奇我只是让系统选择的情况。

回答

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); 
相关问题