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:
Vadim Zeitlin
2007-11-18 20:53:33 +00:00
parent 559843f078
commit 8575ff507f
19 changed files with 797 additions and 173 deletions

View File

@@ -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);