2012-06-06 209 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」,如果不是指向地址的話