{"id":418,"date":"2019-04-30T12:47:25","date_gmt":"2019-04-30T03:47:25","guid":{"rendered":"https:\/\/www.oji-koji.com\/?p=418"},"modified":"2019-05-12T19:30:16","modified_gmt":"2019-05-12T10:30:16","slug":"%e5%88%9d%e3%82%81%e3%81%a6%e3%81%ae%e3%82%bd%e3%82%b1%e3%83%83%e3%83%88api%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0-sockdb-windows-%e7%89%88%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.oji-koji.com\/?p=418","title":{"rendered":"\u521d\u3081\u3066\u306e\u30bd\u30b1\u30c3\u30c8API\u3092\u4f7f\u3063\u305f\u30d7\u30ed\u30b0\u30e9\u30e0 (SockDB Windows \u7248\uff09(2019\/05\/12\u66f4\u65b0)"},"content":{"rendered":"\n<p class=\"program_discription\">SockDB Windows \u7248<br>  <a href=\"https:\/\/www.oji-koji.com\/?p=203\">Linux\u7248<\/a>\u540c\u69d8\u3001\u6b21\u306e\u3088\u3046\u306a\u6a5f\u80fd\u3092\u5b9f\u73fe\u3057\u307e\u3059<br>    1.\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u3092\u8868\u793a\u3059\u308b<br>    2.\u8d77\u52d5\u5f15\u6570\u304c\u306a\u3044\u3068\u304d\uff1a\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308bIP\u30a2\u30c9\u30ec\u30b9\u3092\u8868\u793a\u3059\u308b<br>    3.\u8d77\u52d5\u5f15\u6570\u306b\u30c9\u30e1\u30a4\u30f3\u540d\uff08FQDN\uff09\u3092\u6307\u5b9a\u3057\u305f\u3068\u304d\uff1a\u30c9\u30e1\u30a4\u30f3\u540d\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b<br>      IP\u30a2\u30c9\u30ec\u30b9\u3092\u8868\u793a\u3059\u308b<\/p>\n\n\n\n<p class=\"program_discription\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210<br>  \u30d5\u30a1\u30a4\u30eb\u2192\u65b0\u898f\u4f5c\u6210\u2192VisualC++\u2192\u7a7a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8<br>    \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\uff1aSockDB<br>    \u300c\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3059\u308b\u300d\u306e\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3059\u3002<br>    \u30d7\u30e9\u30c3\u30c8\u30db\u30fc\u30e0\u306f64bits(x64)\u3068\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"program_discription\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u2192\u65e2\u5b58\u306e\u9805\u76ee\u306e\u8ffd\u52a0\u3092\u9078\u3073<a href=\"https:\/\/www.oji-koji.com\/pro-files\/CommonWin.zip\">stdThread.cpp, stdThread.h<\/a> \u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br><a href=\"https:\/\/www.oji-koji.com\/?p=203\">Linux\u7248<\/a>\u304b\u3089SockDB.cpp\u3092\u30b3\u30d4\u30fc\u3057\u3001\u65e2\u5b58\u306e\u9805\u76ee\u306e\u8ffd\u52a0\u3067\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"program_discription\">\u3053\u308c\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u3066\u307f\u308b\u3068\u30a8\u30e9\u30fc\u304c\u3044\u304f\u3064\u304b\u51fa\u307e\u3059\u306e\u3067<br>\u51fa\u305f\u30a8\u30e9\u30fc\u3092\u3064\u3076\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p class=\"program_discription\">error C4996: &#8216;sprintf&#8217;: This function or variable may be unsafe. <br>    sprintf\u306b\u30d0\u30c3\u30d5\u30a1\u30aa\u30fc\u30d0\u30fc\u30e9\u30f3\u306e\u8106\u5f31\u6027\u304c\u3042\u308b\u306e\u3067sprintf_s\u3092\u4f7f\u3046\u304b<br>    _CRT_SECURE_NO_WARNINGS\u3092define\u3059\u308b\u3068\u3044\u3046\u30a8\u30e9\u30fc<br>\u3053\u3053\u3067\u306f\u3001Linux\u3068\u306e\u4e92\u63db\u6027\u3092\u512a\u5148\u3059\u308b\u3053\u3068\u306b\u3057\u3001C4996\u8b66\u544a\u3092\u6291\u5236\u3059\u308b\u3088\u3046\u306b<br>\u3057\u307e\u3059\u3002\u6b21\u306e\u3088\u3046\u306adefine\u3092SockDB.cpp\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"source_code\">#ifdef _MSC_VER         \/\/ Windows\u306e\u3068\u304d\n#define DISABLE_C4996   __pragma(warning(push)) __pragma(warning(disable:4996))\n#define ENABLE_C4996     __pragma(warning(pop))\n#else                   \/\/ Linux\u306e\u3068\u304d\n#define DISABLE_C4996\n#define ENABLE_C4996\n#endif<\/p>\n\n\n\n<p class=\"program_discription\">\u3053\u308c\u3067\u30d3\u30eb\u30c9\u306f\u901a\u308a\u307e\u3059\u304c\u3001\u52d5\u304b\u3057\u3066\u307f\u308b\u3068gethostname\u3067\u30a8\u30e9\u30fc\u306b\u306a\u308a\u307e\u3059\u3002<br>\u3068\u3053\u308d\u304c\u3001\u30a8\u30e9\u30fc\u756a\u53f7\u304c0\u3067\u3069\u3093\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u3066\u3044\u308b\u306e\u304b\u308f\u304b\u308a\u307e\u305b\u3093\u3002<br>Windows\u306e\u5834\u5408\u30bd\u30b1\u30c3\u30c8\u306e\u30a8\u30e9\u30fc\u306ferrno\u3067\u306f\u306a\u304fWSAGetLastError()\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"program_discription\">WSAGetLastError()\u3067WSANOTINITIALISED (10093)\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<br>\u3053\u308c\u306f\u3001Windows\u3067\u306f\u30bd\u30b1\u30c3\u30c8API\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408Winsock DLL\u306e\u521d\u671f\u5316\u3092\u884c\u3046<br>\u5fc5\u8981\u304c\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<br>\u30d7\u30ed\u30b0\u30e9\u30e0\u958b\u59cb\u6642\u306b\u521d\u671f\u5316\u3001\u7d42\u4e86\u6642\u306bWinsock DLL\u306e\u4f7f\u7528\u7d42\u4e86\u3092\u5b9f\u65bd\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0a\u304c\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0(SockDB)\u3067\u306eLinux\u3068Windows\u306e\u9055\u3044\u3067\u3059\u3002<br>\u4ee5\u964d\u4f5c\u6210\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3082\u540c\u69d8\u3067\u3059\u306e\u3067\u3001\u899a\u3048\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<br>SockDB.cpp\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059<\/p>\n\n\n\n<p class=\"source_code\">#include\t&#8220;stdThread.h&#8221;\n\n#ifdef _MSC_VER         \/\/ Windows\u306e\u3068\u304d\n#define DISABLE_C4996   __pragma(warning(push)) __pragma(warning(disable:4996))\n#define ENABLE_C4996    __pragma(warning(pop))\n#else                   \/\/ Linux\u306e\u3068\u304d\n#define DISABLE_C4996\n#define ENABLE_C4996\n#endif\n\n\/\/ WinSock DLL\u306e\u521d\u671f\u5316\u3001\u7d42\u4e86\u51e6\u7406\u3092\u884c\u3046\u95a2\u6570\u306e\u5ba3\u8a00\nBOOL InitSocketLib();\nBOOL UninitSocketLib();\n\nvoid GetHostName();\nvoid GetHostAddress(LPSTR pszCurHost);\n\nint main(int argc, char *argv[])\n{\n    int\t    iRet = -1;\n    LPSTR   pszCurHost = NULL;\n\n    if (InitSocketLib() == FALSE)  \/\/ WinSock DLL \u306e\u521d\u671f\u5316\n        goto L_END;\n    \/\/ \u8d77\u52d5\u5f15\u6570\u306e\u30c1\u30a7\u30c3\u30af\n    if (argc == 2)\n        pszCurHost = argv[1];    \/\/ \u30c9\u30e1\u30a4\u30f3\u540d\u304c\u6307\u5b9a\u3055\u308c\u305f\n\t\n    GetHostName();               \/\/ \u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u306e\u53d6\u5f97\n    GetHostAddress(pszCurHost);  \/\/ \u30a2\u30c9\u30ec\u30b9\u306e\u53d6\u5f97\n    UninitSocketLib();           \/\/ WinSock DLL \u306e\u7d42\u4e86\n    iRet = 0;\nL_END:\n    return(iRet);\n}\n\n#define     VERSION_RECESTED    MAKEWORD(2, 0)\t\/\/ \u5fc5\u8981\u3068\u3059\u308bWINSOCK.DLL(WSOCK32.DLL \u306e\u30d0\u30fc\u30b8\u30e7\u30f3)\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ function\n\/\/    \u30bd\u30b1\u30c3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30ed\u30fc\u30c9\n\/\/ parameter\n\/\/    \u306a\u3057\n\/\/ retun\n\/\/    \u306a\u3057\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\nBOOL InitSocketLib()\n{\n    WORD      wVersionRequested;    \/\/ \u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u683c\u7d0d\u30a8\u30ea\u30a2(windows)\n    WSADATA   wsaData;              \/\/ WinSock \u60c5\u5831\u683c\u7d0d\u30a8\u30ea\u30a2(windows)\n    BOOL      fRet;\n\n    wVersionRequested = VERSION_RECESTED;\t\t\/\/ \u521d\u671f\u5316\u51e6\u7406\n    fRet = (WSAStartup(wVersionRequested, &amp;wsaData) == 0) ? TRUE : FALSE;\n    return(fRet);\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ function\n\/\/    \u30bd\u30b1\u30c3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u958b\u653e\n\/\/ parameter\n\/\/    \u306a\u3057\n\/\/ retun\n\/\/    \u306a\u3057\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\nBOOL UninitSocketLib()\n{\n    BOOL    fRet;\n\n    fRet = (WSACleanup() == 0) ? TRUE : FALSE;  \/\/ \u89e3\u653e\u51e6\u7406\n    return(fRet);\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ function\n\/\/    \u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u306e\u53d6\u5f97\n\/\/ parameter\n\/\/    \u306a\u3057\n\/\/ retun\n\/\/    \u306a\u3057\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\nvoid GetHostName()\n{\n    char    szHostName[NI_MAXHOST];    \/\/ \u30db\u30b9\u30c8\u540d\u683c\u7d0d\u30a8\u30ea\u30a2\n    char    szMsg[NI_MAXHOST];\n\n\/\/ \u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u306e\u53d6\u5f97\n    DISABLE_C4996\n    if (gethostname(szHostName, sizeof(szHostName)) == SOCKET_ERROR)\n        sprintf(szMsg, &#8220;Err: %d&#8221;, WSAGetLastError());\n    else\n        sprintf(szMsg, &#8220;%s&#8221;, szHostName);\n    ENABLE_C4996\n    fprintf(stderr, &#8220;%s\\n&#8221;, szMsg);\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ function\n\/\/    \u30db\u30b9\u30c8\u540d\u304b\u3089IP\u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3059\u308b\n\/\/    \u30db\u30b9\u30c8\u540d\u304cNULL\u306e\u3068\u304d\u306f\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u3092\u4f7f\u7528\u3059\u308b\n\/\/ parameter\n\/\/    LPSTR   pszCurHost    [in]\u30db\u30b9\u30c8\u540d\/NULL\n\/\/ retun\n\/\/    \u306a\u3057\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\nvoid GetHostAddress(LPSTR pszCurHost)\n{\n    char        szHostName[NI_MAXHOST];  \/\/ \u30db\u30b9\u30c8\u540d\u683c\u7d0d\u30a8\u30ea\u30a2\n    addrinfo    hints, *pres = NULL, *pTemp = NULL;\n    char        szHostAddr[NI_MAXHOST];  \/\/ \u30a2\u30c9\u30ec\u30b9\u683c\u7d0d\u30a8\u30ea\u30a2\n    int         iCount = 1;\n\n\/\/ \u30db\u30b9\u30c8\u540d\u3092szHostName\u306b\u683c\u7d0d\n    if (pszCurHost != NULL)\n    {\n        DISABLE_C4996\n        strcpy(szHostName, pszCurHost);\n        ENABLE_C4996\n    }\n    else\n    {\n        if (gethostname(szHostName, sizeof(szHostName)) == SOCKET_ERROR)\n            goto L_END;\n    }\n    \/\/ hints\u306e\u521d\u671f\u5316\n    memset(&amp;hints, 0, sizeof(hints));\n    hints.ai_family = AF_UNSPEC;     \/\/ IPv4, IPv6\u3068\u3082\u306b\u5217\u6319\u5bfe\u8c61\u3068\u3059\u308b\n    \/\/ hint\u306b\u5f93\u3063\u3066\u30a2\u30c9\u30ec\u30b9\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\n    if (getaddrinfo(szHostName, NULL, &amp;hints, &amp;pres) != 0)\n        goto L_END;\n\n    \/\/ \u9806\u756a\u306bpres\u306e\u4e2d\u306b\u683c\u7d0d\u3055\u308c\u3066\u3044\u308b\u60c5\u5831\u3092\u8868\u793a\u3059\u308b\n    pTemp = pres;\n    while (pTemp != NULL)\n    {\n        \/\/ NI_NUMERICHOST \u6570\u5024\u5f62\u5f0f\u306e\u30db\u30b9\u30c8\u540d(IP\u30a2\u30c9\u30ec\u30b9)\n        if (getnameinfo(pTemp-&gt;ai_addr, (socklen_t)pTemp-&gt;ai_addrlen, szHostAddr, sizeof(szHostAddr), NULL, 0, NI_NUMERICHOST) == 0)\n        {\n            fprintf(stderr, &#8220;%d family:%2d Address:%s\\n&#8221;, iCount, pTemp-&gt;ai_family, szHostAddr);\n        }\n        pTemp = pTemp-&gt;ai_next;    \/\/ \u6b21\u306e\u60c5\u5831\u3078\u79fb\u52d5\n        iCount++;\n    }\n    freeaddrinfo(pres);            \/\/ \u53d6\u5f97\u3057\u305f\u60c5\u5831\u3092\u7834\u68c4\nL_END:\n    return;\n}<\/p>\n\n\n\n<p class=\"program_discription\">hints\u306e\u521d\u671f\u5316\u3067<br>hints.ai_family = AF_UNSPEC;<br>\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u5bfe\u8c61\u304c\u3059\u3079\u3066\u306e\u30d5\u30a1\u30df\u30ea\u3064\u307e\u308aIPv4, IPv6\u306b\u306a\u308a\u307e\u3059\u3002<br>AF_INET\u3092\u6307\u5b9a\u3059\u308b\u3068IPv4, AF_INET6\u3092\u6307\u5b9a\u3059\u308b\u3068IPV6\u306e\u307f\u304c\u5bfe\u8c61\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"program_discription\">if(getaddrinfo(szHostName, NULL, &amp;hints, &amp;pres) != 0)<br>\u3068\u3001\u30db\u30b9\u30c8\u540d\u306e\u307f\u3092\u6307\u5b9a\u3059\u308b\u3068\u6307\u5b9a\u3057\u305f\u30db\u30b9\u30c8\u306e\u30a2\u30c9\u30ec\u30b9\u60c5\u5831\u304c<br>\u30d2\u30f3\u30c8\u306b\u6307\u5b9a\u3057\u305f\u6761\u4ef6\u3067pres\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"program_discription\">if (getnameinfo(pTemp-&gt;ai_addr, (socklen_t)pTemp-&gt;ai_addrlen, <br>     szHostAddr, sizeof(szHostAddr), NULL, 0, NI_NUMERICHOST) == 0)<br>\u3068NI_NUMERICHOST\u3092\u6307\u5b9a\u3059\u308b\u3068pTemp-&gt;ai_addr\u306b\u683c\u7d0d\u3055\u308c\u3066\u3044\u308b<br>IP\u30a2\u30c9\u30ec\u30b9(\u30d0\u30a4\u30ca\u30ea)\u304c\u6570\u5024\u5f62\u5f0f\u3067szHostAddr\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002<br>pTemp-&gt;ai_addr\u306fIPv4\u306e\u3068\u304dsockaddr_in\u3067\u3001IPv6\u306e\u3068\u304dsockaddr_in6\u306b<br>\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"program_discription\">\u5f15\u6570\u306bwww.oji-koji.com\u3092\u6307\u5b9a\u3057\u3066\u52d5\u304b\u3059\u3068IPv4\u3068IPv6\u3092DNS<br>\u30b5\u30fc\u30d0\u306b\u767b\u9332\u3057\u3066\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u3061\u3083\u3093\u3068\u53d6\u5f97\u3067\u304d\u3066\u3044\u307e\u3059 <br>(*)AF_INET6\u306e\u5024\u304cLinux\u3068Windows\u3067\u7570\u306a\u308b\u3053\u3068\u306b\u6ce8\u610f<br>   \u6761\u4ef6\u6587\u306a\u3069\u3067\u76f4\u63a5\u5024\u3092\u4f7f\u7528\u3057\u3066\u306f\u3060\u3081\u3067\u3059\u306d<\/p>\n\n\n\n<p class=\"source_code\">C:\\projects\\SockDB\\x64\\Debug&gt;SockDB www.oji-koji.com<br>ShimodaWindows<br>1 family:23 Address:2001:e42:102:1535:160:16:119:222<br>2 family: 2 Address:160.16.119.222<\/p>\n\n\n\n<p class=\"program_discription\">\u3010\u53c2\u8003\u3011<br><a href=\"https:\/\/www.oji-koji.com\/pro-files\/SockDBWin.zip\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8SockDB for Windows(zip)<\/a><br>\u5f15\u6570\u306b\u30c9\u30e1\u30a4\u30f3\u540d\u3001\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u6307\u5b9a\u3059\u308b\u3068<br>IP\u30a2\u30c9\u30ec\u30b9\u3068\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u8868\u793a\u3059\u308b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SockDB Windows \u7248 Linux\u7248\u540c\u69d8\u3001\u6b21\u306e\u3088\u3046\u306a\u6a5f\u80fd\u3092\u5b9f\u73fe\u3057\u307e\u3059 1.\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u3092\u8868\u793a\u3059\u308b 2.\u8d77\u52d5\u5f15\u6570\u304c\u306a\u3044\u3068\u304d\uff1a\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u540d\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308bIP\u30a2\u30c9\u30ec\u30b9\u3092\u8868\u793a\u3059\u308b 3.\u8d77\u52d5\u5f15\u6570\u306b\u30c9\u30e1\u30a4\u30f3\u540d\uff08F [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":129,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_locale":"","_original_post":"","footnotes":""},"categories":[6],"tags":[],"class_list":["post-418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-networkprograming","ja"],"_links":{"self":[{"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=\/wp\/v2\/posts\/418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=418"}],"version-history":[{"count":20,"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=\/wp\/v2\/posts\/418\/revisions"}],"predecessor-version":[{"id":703,"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=\/wp\/v2\/posts\/418\/revisions\/703"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=\/wp\/v2\/media\/129"}],"wp:attachment":[{"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oji-koji.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}