fix CUDPSocket(port) constructor bug

constructor CUDPSocket(port) cannot create properly, fixed
This commit is contained in:
SASANO Takayoshi 2020-09-06 16:32:33 +09:00
parent 9856025923
commit f2543de3da
2 changed files with 23 additions and 8 deletions

View file

@ -32,7 +32,10 @@
#define LogInfo(fmt, ...) ::fprintf(stderr, fmt "\n", ## __VA_ARGS__) #define LogInfo(fmt, ...) ::fprintf(stderr, fmt "\n", ## __VA_ARGS__)
#endif #endif
CUDPSocket::CUDPSocket(const std::string& address, unsigned int port) CUDPSocket::CUDPSocket(const std::string& address, unsigned int port) :
m_address_save(address),
m_port_save(port),
m_counter(0U)
{ {
#if defined(_WIN32) || defined(_WIN64) #if defined(_WIN32) || defined(_WIN64)
WSAData data; WSAData data;
@ -46,15 +49,25 @@ CUDPSocket::CUDPSocket(const std::string& address, unsigned int port)
m_af[i] = 0U; m_af[i] = 0U;
m_fd[i] = -1; m_fd[i] = -1;
} }
m_address[0] = address;
m_port[0] = port;
m_counter = 0U;
} }
CUDPSocket::CUDPSocket(unsigned int port) CUDPSocket::CUDPSocket(unsigned int port) :
m_address_save(),
m_port_save(port),
m_counter(0U)
{ {
CUDPSocket("", port); #if defined(_WIN32) || defined(_WIN64)
WSAData data;
int wsaRet = ::WSAStartup(MAKEWORD(2, 2), &data);
if (wsaRet != 0)
LogError("Error from WSAStartup");
#endif
for (int i = 0; i < UDP_SOCKET_MAX; i++) {
m_address[i] = "";
m_port[i] = 0U;
m_af[i] = 0U;
m_fd[i] = -1;
}
} }
CUDPSocket::~CUDPSocket() CUDPSocket::~CUDPSocket()
@ -152,7 +165,7 @@ bool CUDPSocket::open(const sockaddr_storage& address)
bool CUDPSocket::open(unsigned int af) bool CUDPSocket::open(unsigned int af)
{ {
return open(0, af, m_address[0], m_port[0]); return open(0, af, m_address_save, m_port_save);
} }
bool CUDPSocket::open(const unsigned int index, const unsigned int af, const std::string& address, const unsigned int port) bool CUDPSocket::open(const unsigned int index, const unsigned int af, const std::string& address, const unsigned int port)

View file

@ -68,6 +68,8 @@ public:
static bool isNone(const sockaddr_storage& addr); static bool isNone(const sockaddr_storage& addr);
private: private:
std::string m_address_save;
unsigned short m_port_save;
std::string m_address[UDP_SOCKET_MAX]; std::string m_address[UDP_SOCKET_MAX];
unsigned short m_port[UDP_SOCKET_MAX]; unsigned short m_port[UDP_SOCKET_MAX];
unsigned int m_af[UDP_SOCKET_MAX]; unsigned int m_af[UDP_SOCKET_MAX];