Files
wxWidgets/include/wx/sckaddr.h
Robin Dunn ce22d615fe Fix so the Host: header in wxHTTP really works. With virtual hosts it
is vital that the original host name given in the URL is used in the
Host: header so the sever will use the right vhost config.  Previously
it was using the value returned from gethostbyaddr which will often
not be the same as the hostname in the URL.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14332 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-02-21 00:01:32 +00:00

130 lines
3.1 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: sckaddr.h
// Purpose: Network address classes
// Author: Guilhem Lavaux
// Modified by:
// Created: 26/04/1997
// RCS-ID: $Id$
// Copyright: (c) 1997, 1998 Guilhem Lavaux
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_NETWORK_ADDRESS_H
#define _WX_NETWORK_ADDRESS_H
#ifdef __GNUG__
#pragma interface
#endif
#include "wx/defs.h"
#if wxUSE_SOCKETS
#include "wx/string.h"
#include "wx/gsocket.h"
class WXDLLEXPORT wxSockAddress : public wxObject {
DECLARE_ABSTRACT_CLASS(wxSockAddress)
public:
typedef enum { IPV4=1, IPV6=2, UNIX=3 } Addr;
wxSockAddress();
wxSockAddress(const wxSockAddress& other);
virtual ~wxSockAddress();
wxSockAddress& operator=(const wxSockAddress& other);
virtual void Clear();
virtual int Type() = 0;
GAddress *GetAddress() const { return m_address; }
void SetAddress(GAddress *address);
// we need to be able to create copies of the addresses polymorphically (i.e.
// wihtout knowing the exact address class)
virtual wxSockAddress *Clone() const = 0;
protected:
GAddress *m_address;
};
class WXDLLEXPORT wxIPV4address : public wxSockAddress {
DECLARE_DYNAMIC_CLASS(wxIPV4address)
public:
wxIPV4address();
wxIPV4address(const wxIPV4address& other);
virtual ~wxIPV4address();
bool Hostname(const wxString& name);
bool Hostname(unsigned long addr);
bool Service(const wxString& name);
bool Service(unsigned short port);
bool LocalHost();
bool AnyAddress();
wxString Hostname();
wxString OrigHostname() { return m_origHostname; }
unsigned short Service();
virtual int Type() { return wxSockAddress::IPV4; }
virtual wxSockAddress *Clone() const;
private:
wxString m_origHostname;
};
#ifdef ENABLE_IPV6
class WXDLLEXPORT wxIPV6address : public wxSockAddress {
DECLARE_DYNAMIC_CLASS(wxIPV6address)
private:
struct sockaddr_in6 *m_addr;
public:
wxIPV6address();
wxIPV6address(const wxIPV6address& other);
virtual ~wxIPV6address();
bool Hostname(const wxString& name);
bool Hostname(unsigned char addr[16]);
bool Service(const wxString& name);
bool Service(unsigned short port);
bool LocalHost();
wxString Hostname() const;
unsigned short Service() const;
virtual int Type() { return wxSockAddress::IPV6; }
virtual wxSockAddress *Clone() const { return new wxIPV6address(*this); }
};
#endif
#if defined(__UNIX__) && !defined(__WXMAC__)
#include <sys/socket.h>
#ifndef __VMS__
# include <sys/un.h>
#endif
class WXDLLEXPORT wxUNIXaddress : public wxSockAddress {
DECLARE_DYNAMIC_CLASS(wxUNIXaddress)
private:
struct sockaddr_un *m_addr;
public:
wxUNIXaddress();
wxUNIXaddress(const wxUNIXaddress& other);
virtual ~wxUNIXaddress();
void Filename(const wxString& name);
wxString Filename();
virtual int Type() { return wxSockAddress::UNIX; }
virtual wxSockAddress *Clone() const { return new wxUNIXaddress(*this); }
};
#endif
// __UNIX__
#endif
// wxUSE_SOCKETS
#endif
// _WX_NETWORK_ADDRESS_H