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