added Socket::getIfceIndex(), Socket::getIfceAddress(), etc

This commit is contained in:
2018-10-17 14:20:32 +00:00
parent 4a10c5d7cd
commit 5b529ad535
5 changed files with 316 additions and 9 deletions

View File

@ -96,11 +96,29 @@ public:
/* TODO: sendmsg, recvmsg */
// utility functions to retrieve network configuration information.
int getIfceIndex (const qse_mchar_t* name);
int getIfceIndex (const qse_wchar_t* name);
// 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);
protected:
qse_sck_hnd_t handle;
int domain;
ErrorCode errcode;
void set_errcode_with_syserr (int syserr);
int get_ifce_address (int cmd, const void* name, bool wchar, SocketAddress* addr);
};

View File

@ -70,6 +70,9 @@ public:
qse_uint16_t getPort() const QSE_CPP_NOEXCEPT; // in network-byte order
void setPort (qse_uint16_t port) QSE_CPP_NOEXCEPT; // in network-byte order
qse_uint32_t getScopeId () QSE_CPP_NOEXCEPT; // in network-byte order
void setScopeId (qse_uint32_t scope_id) QSE_CPP_NOEXCEPT; // in network-byte order
int set (const qse_skad_t* skad) QSE_CPP_NOEXCEPT;
int set (const qse_nwad_t* nwad) QSE_CPP_NOEXCEPT;
int set (const qse_mchar_t* str) QSE_CPP_NOEXCEPT;
@ -77,7 +80,6 @@ public:
int set (const qse_mchar_t* str, qse_size_t len) QSE_CPP_NOEXCEPT;
int set (const qse_wchar_t* str, qse_size_t len) QSE_CPP_NOEXCEPT;
qse_mchar_t* toStrBuf (qse_mchar_t* buf, qse_size_t len) const QSE_CPP_NOEXCEPT;
qse_wchar_t* toStrBuf (qse_wchar_t* buf, qse_size_t len) const QSE_CPP_NOEXCEPT;