我在使用Qt5中的QTcpSocket類的新綁定功能時遇到了麻煩。任何幫助搞清楚這一點將不勝感激。Qt5綁定多宿主網絡上的TCP套接字
我有一個多宿主服務器,其中包含兩個網卡,每個網卡都有一個單獨的IP地址。我在服務器上設置了路由,以便從源地址發送出適當的NIC,而不管目標遠程地址如何。也就是說,從x.x.x.0發送通過eth0發送出去,x.x.x.1通過eth1發送出去,而不管數據發送給誰。這些網卡通過以太網連接到長距離Wifi鏈路,然後連接到交換機。這些無線鏈路充當透明橋,可以看作是兩根以太網電纜(但它們的帶寬有限)。交換機然後連接到計算機。目標是在服務器和計算機之間傳輸數據,並且使用兩個並行的wifi鏈接來增加帶寬。儘管服務器在物理上是一臺服務器,但該軟件已將計算機作爲軟件服務器運行(與其他服務器連接)。也就是說,物理服務器(軟件客戶端)打開TCP套接字並嘗試連接到監聽計算機(軟件服務器)。
我使用Qt5的綁定功能將一個TCP套接字綁定到eth0 IP地址,並將另一個TCP套接字綁定到eth1 IP地址。我已經驗證了其他程序如PING或通過SCP傳輸文件的效果。請參閱http://qt-project.org/doc/qt-5.0/qtnetwork/qabstractsocket.html#bind
當我調用bind時,調用成功,並且後續對本地IP地址的請求返回正確的值。例如。 socket-> bind(ip)返回true,然後socket-> localAddress()等於ip。但是,當我調用connectToHost時,localAddress在啓動連接嘗試時丟失,連接後它有一個不同的localAddress,它不是我想要的那個。
任何人都可以闡明發生了什麼?我試圖避免重寫軟件來扭轉軟件客戶端/服務器的角色,因爲這些程序相當大。謝謝您的幫助。