\r
// IPv6対応\r
\r
+const struct in6_addr IN6ADDR_NONE = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};\r
+\r
typedef struct\r
{\r
HANDLE h;\r
pHost->h_addr_list[0] = (char*)(&pHost->h_addr_list[2]);\r
pHost->h_addr_list[1] = NULL;\r
memcpy(pHost->h_addr_list[0], &((struct sockaddr_in*)p->ai_addr)->sin_addr, sizeof(struct in_addr));\r
- PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(sizeof(struct hostent) + sizeof(char*) * 2 + p->ai_addrlen));\r
+ PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(sizeof(struct hostent) + sizeof(char*) * 2 + sizeof(struct in_addr)));\r
}\r
else\r
PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(WSAENOBUFS << 16));\r
pHost->h_addr_list[0] = (char*)(&pHost->h_addr_list[2]);\r
pHost->h_addr_list[1] = NULL;\r
memcpy(pHost->h_addr_list[0], &((struct sockaddr_in6*)p->ai_addr)->sin6_addr, sizeof(struct in6_addr));\r
- PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(sizeof(struct hostent) + sizeof(char*) * 2 + p->ai_addrlen));\r
+ PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(sizeof(struct hostent) + sizeof(char*) * 2 + sizeof(struct in6_addr)));\r
}\r
else\r
PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(WSAENOBUFS << 16));\r
int Result;\r
Result = SOCKET_ERROR;\r
if(TerminateThread(hAsyncTaskHandle, 0))\r
+ {\r
+ CloseHandle(hAsyncTaskHandle);\r
Result = 0;\r
+ }\r
return Result;\r
}\r
\r
{\r
if(!cp)\r
{\r
- memset(&Result, 0xff, sizeof(Result));\r
+ memcpy(&Result, &IN6ADDR_NONE, sizeof(struct in6_addr));\r
break;\r
}\r
if(i >= AfterZero)\r
Result.u.Word[i] = ((Result.u.Word[i] & 0xff00) >> 8) | ((Result.u.Word[i] & 0x00ff) << 8);\r
if(strncmp(p, ":", 1) != 0 && strlen(p) > 0)\r
{\r
- memset(&Result, 0xff, sizeof(Result));\r
+ memcpy(&Result, &IN6ADDR_NONE, sizeof(struct in6_addr));\r
break;\r
}\r
if(cp = strstr(cp, ":"))\r