// addresses
   virtual bool GetLocal(wxSockAddress& addr_man) const;
   virtual bool GetPeer(wxSockAddress& addr_man) const;
-  virtual bool SetLocal(wxIPV4address& local);
+  virtual bool SetLocal(const wxIPV4address& local);
 
   // base IO
   virtual bool  Close();
   wxSocketClient(wxSocketFlags flags = wxSOCKET_NONE);
   virtual ~wxSocketClient();
 
-  virtual bool Connect(wxSockAddress& addr, bool wait = true);
-  bool Connect(wxSockAddress& addr, wxSockAddress& local, bool wait = true);
+  virtual bool Connect(const wxSockAddress& addr, bool wait = true);
+  bool Connect(const wxSockAddress& addr, const wxSockAddress& local,
+               bool wait = true);
 
   bool WaitOnConnect(long seconds = -1, long milliseconds = 0);
 
   }
 
 private:
-  virtual bool
-      DoConnect(wxSockAddress& addr, wxSockAddress* local, bool wait = true);
+  virtual bool DoConnect(const wxSockAddress& addr,
+                         const wxSockAddress* local,
+                         bool wait = true);
 
   // buffer sizes, -1 if unset and defaults should be used
   int m_initialRecvBufferSize;
 
         @see WaitOnConnect(), wxSocketBase::SetNotify,
              wxSocketBase::Notify
     */
-    bool Connect(wxSockAddress& address, bool wait = true);
-    bool Connect(wxSockAddress& address, wxSockAddress& local,
+    bool Connect(const wxSockAddress& address, bool wait = true);
+    bool Connect(const wxSockAddress& address, const wxSockAddress& local,
                  bool wait = true);
     //@}
 
         a local port is set for a wxSocketClient,
         @b bind will be called before @b connect.
     */
-    bool SetLocal(wxIPV4address& local);
+    bool SetLocal(const wxIPV4address& local);
 
     /**
         SetNotify specifies which socket events are to be sent to the event handler.
 
     return true;
 }
 
-bool wxSocketBase::SetLocal(wxIPV4address& local)
+bool wxSocketBase::SetLocal(const wxIPV4address& local)
 {
   GAddress* la = local.GetAddress();
 
 // Connect
 // --------------------------------------------------------------------------
 
-bool wxSocketClient::DoConnect(wxSockAddress& addr_man, wxSockAddress* local, bool wait)
+bool wxSocketClient::DoConnect(const wxSockAddress& addr_man,
+                               const wxSockAddress* local,
+                               bool wait)
 {
   GSocketError err;
 
   return true;
 }
 
-bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
+bool wxSocketClient::Connect(const wxSockAddress& addr_man, bool wait)
 {
-    return (DoConnect(addr_man, NULL, wait));
+    return DoConnect(addr_man, NULL, wait);
 }
 
-bool wxSocketClient::Connect(wxSockAddress& addr_man, wxSockAddress& local, bool wait)
+bool wxSocketClient::Connect(const wxSockAddress& addr_man,
+                             const wxSockAddress& local,
+                             bool wait)
 {
-    return (DoConnect(addr_man, &local, wait));
+    return DoConnect(addr_man, &local, wait);
 }
 
 bool wxSocketClient::WaitOnConnect(long seconds, long milliseconds)