Windowsアプリケーションを作成しており、Qt5.10.0にてサブネットを超えたTCP接続をしたいと思っております。
環境は以下の通りです。
・VS2015 (C++)
・Qt5.10.0
現在QTcpSocketを利用してTCPの接続を試みておりますが、
同一サブネット内であれば問題ありませんが、別サブネットに対して行うと接続に失敗しているようです。
/* 本来はクラスをオーバーライドしていますが、伝わりやすいように変数にしています */ QTcpSocket socket; /* TCP接続 */ QHostAddress target( "192.168.100.26" ); socket.connectToHost( target, 13200 ); if( !socket.waitForConnected( 5000 ) ){ return false; // ここでタイムアウトしてしまう }
またLocalAddressの設定の問題を疑い、自身のローカルアドレスの設定を試してみましたが
問題は解決しませんでした。
以下がサンプルとなります。
/* 本来はクラスをオーバーライドしていますが、伝わりやすいように変数にしています */ QTcpSocket socket; /* 自身のLocalAddress設定 */ QHostAddress pcAddress( "192.168.1.228" ); socket.setLocalAddress( pcAddress ); socket.setLocalPort( 0 ); /* TCP接続 */ QHostAddress target( "192.168.100.26" ); socket.connectToHost( target, 13200 ); if( !socket.waitForConnected( 5000 ) ){ return false; // ここでタイムアウトしてしまう }
補足としては、コマンドプロンプトでのPingにて、応答があること自体は確認できておりますので、
物理的な問題は無いかとは思っております。
(ルーターも合わせて設定済みの環境です)
何かQtの足りない設定や、使用方法等に問題がありますでしょうか?
ご回答宜しくお願いいたします。
【補足】
ネットワーク構成および、こちらでの確認済み内容について補足させて頂きます。
環境:
・Windows10
・オンボードとUSBを含めて、複数のネットワークカードが利用可能な状態
・1つのネットワーク設定を固定IP Addressとして、以下のように接続
[PC(192.168.1.228) == (192.168.1.1) Router (192.168.100.1) == (192.168.100.26)]
状況:
・送信元(192.168.1.228)が指定できるようなTCP接続確認ツールでは接続できている。
・接続確認にはWireSharkも利用し、パケットの送受信も確認できている。
・一応[ipconfig 192.168.100.26 -S 192.168.1.228]でも応答は確認できている。
・Qtでも同様の事をしたく、TCP Socketクラスを利用してみるも上手く繋がらない。
回答2件
あなたの回答
tips
プレビュー