2012-06-06 158 views
1

使用boost asio我试图将套接字绑定到特定的端口,并且绑定是正确的,直到我连接到服务器。连接到服务器后客户端TCP套接字端口更改

socket.open(tcp::v4(), ec); 
socket.set_option(tcp::socket::reuse_address(true),ec); 
socket.bind(tcp::endpoint(tcp::v4(), port_client), ec); 
. 
. 
cout <<"before connect:"<<socket.local_endpoint().address().to_string()<<":"<<socket.local_endpoint().port()<<endl; 

的端口就可以了,直到这一点,但是当我把它连接到服务器:

boost::asio::connect(socket, endpoint_iterator,ec); 
. 
cout <<"after connect:"<<socket.local_endpoint().address().to_string()<<":"<<socket.local_endpoint().port()<<endl; 

到其它端口的本地端口的变化。有人可以帮忙吗? 另外地址出来是0.0.0.0为什么?

回答

1

等待太久的答案...自己解决了这个问题。问题出在connect命令。

我所用的连接命令basic_socket但连接命令应该是:

socket.connect(*endpoint_iterator,ec); 

现在是工作的罚款。

0

你可以打印tcp :: v4(),这个值是“0.0.0.0”,如果不是指向地址的话