2016-06-14 5 views
0

私はwxWidgetsで非常に簡単なチャットアプリケーションを構築しようとしています。現時点では、自分のLAN IPアドレスを使用して、ローカルマシンと仮想マシン上でソフトウェアを開くことができます。私はwxGetFullHostName()機能を介して各マシンのローカルIPアドレスを取得することができます。この値を他のインスタンスに手動で入力して接続します。この段階ですべてがうまくいきます。wxWidgetsを使ってパブリックIPアドレスを取得して接続する方法

しかし、今は別の場所にある.exeを友人に送信したいと思います。どのようにアプリケーションにマシンのパブリックIPアドレスを公開し、私の友達に提供してインスタンスに接続できるようにすることができますか? 2つのインスタンスを相互に接続するための他の要件はありますか?

私はC++を使用していますが、この質問にはそれほど重要ではないと思います。

答えて

0

NATの背後で動作するプラットフォームに依存しない方法については、ipifyhttps://www.ipify.org/)を使用することをお勧めします。

C++とwxWidgetsでこれを達成する方法はたくさんあります。可能であれば、curlhttps://curl.haxx.se/libcurl/)を使用することをお勧めします。

#include <wx/sstream.h> 
#include <wx/protocol/http.h> 
#include <wx/msgdlg.h> 

MyFrame::MyFrame(const wxString& title) 
     : wxFrame(NULL, wxID_ANY, title) 
{ 
    wxHTTP http; 

    http.SetHeader("Content-type", "text/html; charset=utf-8"); 
    http.SetTimeout(10); 

    http.Connect("api.ipify.org"); 

    wxInputStream* httpStream = http.GetInputStream("/"); 

    if (http.GetError() == wxPROTO_NOERR) 
    { 
     wxString result; 
     wxStringOutputStream out_stream(&result); 
     httpStream->Read(out_stream); 

     wxMessageBox(result); 
    } 
    else 
    { 
     wxMessageBox("Unable to connect!"); 
    } 

    wxDELETE(httpStream); 
} 

しかし、「純粋な」wxWidgetsの実装のためにあなたはminimal.cppサンプルに以下の修正を試すことができます

関連する問題