experimental IPv6 implementation (patch 1771429)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50061 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -75,6 +75,11 @@ public:
|
||||
// event handlers for Protocols menu
|
||||
void OnTestURL(wxCommandEvent& event);
|
||||
#endif
|
||||
#if wxUSE_IPV6
|
||||
void OnOpenConnectionIPv6(wxCommandEvent& event);
|
||||
#endif
|
||||
|
||||
void OpenConnection(int family = AF_INET);
|
||||
|
||||
// event handlers for DatagramSocket menu (stub)
|
||||
void OnDatagram(wxCommandEvent& event);
|
||||
@@ -110,6 +115,9 @@ enum
|
||||
CLIENT_QUIT = wxID_EXIT,
|
||||
CLIENT_ABOUT = wxID_ABOUT,
|
||||
CLIENT_OPEN = 100,
|
||||
#if wxUSE_IPV6
|
||||
CLIENT_OPENIPV6,
|
||||
#endif
|
||||
CLIENT_TEST1,
|
||||
CLIENT_TEST2,
|
||||
CLIENT_TEST3,
|
||||
@@ -131,6 +139,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(CLIENT_QUIT, MyFrame::OnQuit)
|
||||
EVT_MENU(CLIENT_ABOUT, MyFrame::OnAbout)
|
||||
EVT_MENU(CLIENT_OPEN, MyFrame::OnOpenConnection)
|
||||
#if wxUSE_IPV6
|
||||
EVT_MENU(CLIENT_OPENIPV6, MyFrame::OnOpenConnectionIPv6)
|
||||
#endif
|
||||
EVT_MENU(CLIENT_TEST1, MyFrame::OnTest1)
|
||||
EVT_MENU(CLIENT_TEST2, MyFrame::OnTest2)
|
||||
EVT_MENU(CLIENT_TEST3, MyFrame::OnTest3)
|
||||
@@ -188,6 +199,9 @@ MyFrame::MyFrame() : wxFrame((wxFrame *)NULL, wxID_ANY,
|
||||
|
||||
m_menuSocket = new wxMenu();
|
||||
m_menuSocket->Append(CLIENT_OPEN, _("&Open session"), _("Connect to server"));
|
||||
#if wxUSE_IPV6
|
||||
m_menuSocket->Append(CLIENT_OPENIPV6, _("&Open session(IPv6)"), _("Connect to server(IPv6)"));
|
||||
#endif
|
||||
m_menuSocket->AppendSeparator();
|
||||
m_menuSocket->Append(CLIENT_TEST1, _("Test &1"), _("Test basic functionality"));
|
||||
m_menuSocket->Append(CLIENT_TEST2, _("Test &2"), _("Test ReadMsg and WriteMsg"));
|
||||
@@ -261,9 +275,36 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
void MyFrame::OnOpenConnection(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxIPV4address addr;
|
||||
OpenConnection(AF_INET);
|
||||
}
|
||||
#if wxUSE_IPV6
|
||||
void MyFrame::OnOpenConnectionIPv6(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
OpenConnection(AF_INET6);
|
||||
}
|
||||
#endif // wxUSE_IPV6
|
||||
|
||||
void MyFrame::OpenConnection(int family)
|
||||
{
|
||||
wxIPaddress * addr;
|
||||
#if wxUSE_IPV6
|
||||
wxIPV6address addr6;
|
||||
wxIPV4address addr4;
|
||||
if(family==AF_INET6)
|
||||
{
|
||||
addr = & addr6;
|
||||
} else {
|
||||
addr = & addr4;
|
||||
}
|
||||
#else
|
||||
wxIPV4address addr4;
|
||||
addr = & addr4;
|
||||
#endif
|
||||
|
||||
m_menuSocket->Enable(CLIENT_OPEN, false);
|
||||
#if wxUSE_IPV6
|
||||
m_menuSocket->Enable(CLIENT_OPENIPV6, false);
|
||||
#endif
|
||||
m_menuSocket->Enable(CLIENT_CLOSE, false);
|
||||
|
||||
// Ask user for server address
|
||||
@@ -272,8 +313,8 @@ void MyFrame::OnOpenConnection(wxCommandEvent& WXUNUSED(event))
|
||||
_("Connect ..."),
|
||||
_("localhost"));
|
||||
|
||||
addr.Hostname(hostname);
|
||||
addr.Service(3000);
|
||||
addr->Hostname(hostname);
|
||||
addr->Service(3000);
|
||||
|
||||
// Mini-tutorial for Connect() :-)
|
||||
// ---------------------------
|
||||
@@ -325,7 +366,7 @@ void MyFrame::OnOpenConnection(wxCommandEvent& WXUNUSED(event))
|
||||
// And that's all :-)
|
||||
|
||||
m_text->AppendText(_("\nTrying to connect (timeout = 10 sec) ...\n"));
|
||||
m_sock->Connect(addr, false);
|
||||
m_sock->Connect(*addr, false);
|
||||
m_sock->WaitOnConnect(10);
|
||||
|
||||
if (m_sock->IsConnected())
|
||||
@@ -626,7 +667,11 @@ void MyFrame::UpdateStatusBar()
|
||||
}
|
||||
else
|
||||
{
|
||||
#if wxUSE_IPV6
|
||||
wxIPV6address addr;
|
||||
#else
|
||||
wxIPV4address addr;
|
||||
#endif
|
||||
|
||||
m_sock->GetPeer(addr);
|
||||
s.Printf(_("%s : %d"), (addr.Hostname()).c_str(), addr.Service());
|
||||
@@ -637,6 +682,9 @@ void MyFrame::UpdateStatusBar()
|
||||
#endif // wxUSE_STATUSBAR
|
||||
|
||||
m_menuSocket->Enable(CLIENT_OPEN, !m_sock->IsConnected() && !m_busy);
|
||||
#if wxUSE_IPV6
|
||||
m_menuSocket->Enable(CLIENT_OPENIPV6, !m_sock->IsConnected() && !m_busy);
|
||||
#endif
|
||||
m_menuSocket->Enable(CLIENT_TEST1, m_sock->IsConnected() && !m_busy);
|
||||
m_menuSocket->Enable(CLIENT_TEST2, m_sock->IsConnected() && !m_busy);
|
||||
m_menuSocket->Enable(CLIENT_TEST3, m_sock->IsConnected() && !m_busy);
|
||||
|
Reference in New Issue
Block a user