![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/share/emscripten/tests/ |
Upload File : |
#include <netdb.h> #include <stdint.h> #include <string.h> #include <assert.h> #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #ifdef __EMSCRIPTEN__ #include <arpa/inet.h> #endif #define uint16 uint16_t class NetworkAddress { private: sockaddr_storage address; ///< The resolved address public: /** * Create a network address based on a unresolved host and port * @param hostname the unresolved hostname * @param port the port * @param family the address family */ NetworkAddress(const char *hostname = "", uint16 port = 0, int family = AF_UNSPEC) { memset(&this->address, 0, sizeof(this->address)); this->address.ss_family = family; this->SetPort(port); } uint16 GetPort() const; void SetPort(uint16 port); }; /** * Get the port. * @return the port. */ uint16 NetworkAddress::GetPort() const { printf("Get PORT family: %d\n", this->address.ss_family); switch (this->address.ss_family) { case AF_UNSPEC: case AF_INET: return ntohs(((const struct sockaddr_in *)&this->address)->sin_port); case AF_INET6: return ntohs(((const struct sockaddr_in6 *)&this->address)->sin6_port); default: throw 0; } } /** * Set the port. * @param port set the port number. */ void NetworkAddress::SetPort(uint16 port) { printf("Set PORT family: %d, port: %d\n", this->address.ss_family, port); switch (this->address.ss_family) { case AF_UNSPEC: case AF_INET: ((struct sockaddr_in*)&this->address)->sin_port = htons(port); break; case AF_INET6: ((struct sockaddr_in6*)&this->address)->sin6_port = htons(port); break; default: throw 0; } } int main() { NetworkAddress na("127.0.0.1", 3979); printf("PORT: %d\n", na.GetPort()); return 0; }