2011-08-18 108 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); 
相關問題