0
我正在嘗試將我的TCP客戶端配置爲使用特定的本地端口連接到另一個TCP服務器。將客戶端綁定到本地端口
我使用下面的代碼,但它不工作。 你知道我做錯了什麼,如果這是可能的? 我正在使用LINUX機器。
感謝
AFG
int localport=32000;
m_clientfd = socket(AF_INET, SOCK_STREAM, 0);
assert(m_clientfd >= 0);
// someone set the localport
struct sockaddr_in sa_loc;
struct hostent* pLocalHostInfo = gethostbyname("localhost");
long LocalHostAddress;
memcpy(&LocalHostAddress, pLocalHostInfo->h_addr
, pLocalHostInfo->h_length);
// Local
memset(&sa_loc, 0, sizeof(struct sockaddr_in));
sa_loc.sin_family = AF_INET;
sa_loc.sin_port = htons(localport);
sa_loc.sin_addr.s_addr = LocalHostAddress;
int ret_bind = bind(m_clientfd, (struct sockaddr *)&sa_loc
, sizeof(struct sockaddr));
assert(ret_bind != -1);
你所擺在首位做錯了是,你仍然使用'的gethostbyname()',而不是['的getaddrinfo()'](http://pubs.opengroup.org/onlinepubs/009604499/functions /getaddrinfo.html)。這並不是說它不能用'gethostbyname()',但它完全是遺留的。世界不再僅僅由IPv4組成。 – glglgl 2012-07-26 10:59:28