added Socket::bindToIfce()

This commit is contained in:
2018-10-18 23:29:20 +00:00
parent d3ed032636
commit d533112788
2 changed files with 79 additions and 23 deletions

View File

@ -83,6 +83,11 @@ public:
// bind to the ip address of the interface
int bindToIfceAddr (const qse_wchar_t* ifce, qse_uint16_t port) QSE_CPP_NOEXCEPT;
// bind to the interface device
int bindToIfce (const qse_mchar_t* ifce) QSE_CPP_NOEXCEPT;
// bind to the interface device
int bindToIfce (const qse_wchar_t* ifce) QSE_CPP_NOEXCEPT;
int listen (int backlog = 128) QSE_CPP_NOEXCEPT;
int accept (Socket* newsck, SocketAddress* newaddr, int traits = 0) QSE_CPP_NOEXCEPT;
@ -102,24 +107,24 @@ public:
qse_ssize_t receive (void* buf, qse_size_t len, SocketAddress& srcaddr) QSE_CPP_NOEXCEPT;
/* TODO: sendmsg, recvmsg */
int joinMulticastGroup (const SocketAddress& mcaddr, const SocketAddress& ifaddr);
int leaveMulticastGroup (const SocketAddress& mcaddr, const SocketAddress& ifaddr);
int joinMulticastGroup (const SocketAddress& mcaddr, const SocketAddress& ifaddr) QSE_CPP_NOEXCEPT;
int leaveMulticastGroup (const SocketAddress& mcaddr, const SocketAddress& ifaddr) QSE_CPP_NOEXCEPT;
// utility functions to retrieve network configuration information.
int getIfceIndex (const qse_mchar_t* name);
int getIfceIndex (const qse_wchar_t* name);
int getIfceIndex (const qse_mchar_t* name) QSE_CPP_NOEXCEPT;
int getIfceIndex (const qse_wchar_t* name) QSE_CPP_NOEXCEPT;
// the following 6 functions are provided for backward compatibility.
// it is limited to a single address and they may suffer race condition.
// for example, you call getIfceAddress() followed by getIfceNetmask().
// the network configuration information may change in between.
// the address/netmask pair may not be the valid fixed combination.
int getIfceAddress (const qse_mchar_t* name, SocketAddress* addr);
int getIfceAddress (const qse_wchar_t* name, SocketAddress* addr);
int getIfceNetmask (const qse_mchar_t* name, SocketAddress* addr);
int getIfceNetmask (const qse_wchar_t* name, SocketAddress* addr);
int getIfceBroadcast (const qse_mchar_t* name, SocketAddress* addr);
int getIfceBroadcast (const qse_wchar_t* name, SocketAddress* addr);
int getIfceAddress (const qse_mchar_t* name, SocketAddress* addr) QSE_CPP_NOEXCEPT;
int getIfceAddress (const qse_wchar_t* name, SocketAddress* addr) QSE_CPP_NOEXCEPT;
int getIfceNetmask (const qse_mchar_t* name, SocketAddress* addr) QSE_CPP_NOEXCEPT;
int getIfceNetmask (const qse_wchar_t* name, SocketAddress* addr) QSE_CPP_NOEXCEPT;
int getIfceBroadcast (const qse_mchar_t* name, SocketAddress* addr) QSE_CPP_NOEXCEPT;
int getIfceBroadcast (const qse_wchar_t* name, SocketAddress* addr) QSE_CPP_NOEXCEPT;
protected:
qse_sck_hnd_t handle;