Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Japanese
  4. 【Qt】サブネットを超えたTCPの接続方法について
Forum Update on Monday, May 27th 2025

【Qt】サブネットを超えたTCPの接続方法について

Scheduled Pinned Locked Moved Solved Japanese
2 Posts 1 Posters 3.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Y Offline
    Y Offline
    yasuhito
    wrote on last edited by
    #1

    はじめまして、戸塚と申します。

    現在Windowsアプリケーションを作成しており、Qt5.10.0にてサブネットを超えたTCP接続をしたいと思っております。

    環境は以下の通りです。
    ・Windows10
    ・VS2015 (C++)
    ・Qt5.10.0
    ・オンボードとUSBを含めて、複数のネットワークカードが利用可能な状態
    ・1つのネットワーク設定を固定IP Addressとして、以下のように接続
    [PC(192.168.1.228) == (192.168.1.1) Router (192.168.100.1) == (192.168.100.26)]

    現在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[ipconfig 192.168.100.26 -S 192.168.1.228]や、送信元IP Addressが指定可能なツールであれば、接続ができれており、WireSharkにてパケットの送受信も確認できております。

    何かQtの足りない設定や、使用方法等に問題がありますでしょうか?
    ご回答宜しくお願いいたします。

    Y 1 Reply Last reply
    0
    • Y yasuhito

      はじめまして、戸塚と申します。

      現在Windowsアプリケーションを作成しており、Qt5.10.0にてサブネットを超えたTCP接続をしたいと思っております。

      環境は以下の通りです。
      ・Windows10
      ・VS2015 (C++)
      ・Qt5.10.0
      ・オンボードとUSBを含めて、複数のネットワークカードが利用可能な状態
      ・1つのネットワーク設定を固定IP Addressとして、以下のように接続
      [PC(192.168.1.228) == (192.168.1.1) Router (192.168.100.1) == (192.168.100.26)]

      現在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[ipconfig 192.168.100.26 -S 192.168.1.228]や、送信元IP Addressが指定可能なツールであれば、接続ができれており、WireSharkにてパケットの送受信も確認できております。

      何かQtの足りない設定や、使用方法等に問題がありますでしょうか?
      ご回答宜しくお願いいたします。

      Y Offline
      Y Offline
      yasuhito
      wrote on last edited by yasuhito
      #2

      @yasuhito
      自己解決できましたので記述しておきます。
      setLocalAddressをbindに変更するだけでした。

      お騒がせしました。

      1 Reply Last reply
      1

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved