亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tpipv6.h

?? 一個從計算機端口接受數據存入數據庫的程序
?? H
字號:
/*++

Copyright (c) 2000 Microsoft Corporation

Module Name:

    tpipv6.h

Abstract:

    This module contains IPv6-specific extensions, and address family
    independent extensions to Winsock for the IPv6 Technology Preview.

--*/

#ifndef _TPIPV6_
#define _TPIPV6_

#ifdef _MSC_VER
#define TPIPV6_INLINE __inline
#else
#define TPIPV6_INLINE extern inline /* GNU style */
#endif

#ifdef __cplusplus
#define TPIPV6_EXTERN extern "C"
#else
#define TPIPV6_EXTERN extern
#endif

#ifdef _WINSOCK2API_ 
/* This section gets included if winsock2.h is included */

#ifndef IPPROTO_IPV6

#define IPPROTO_IPV6 41

typedef unsigned __int64 u_int64;

//
// Portable socket structure.
//

//
// Desired design of maximum size and alignment.
// These are implementation specific.
//
#define _SS_MAXSIZE 128                  // Maximum size.
#define _SS_ALIGNSIZE (sizeof(__int64))  // Desired alignment. 

//
// Definitions used for sockaddr_storage structure paddings design.
//
#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short))
#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) + _SS_PAD1SIZE \
                                                    + _SS_ALIGNSIZE))

struct sockaddr_storage {
    short ss_family;               // Address family.
    char __ss_pad1[_SS_PAD1SIZE];  // 6 byte pad, this is to make
                                   // implementation specific pad up to
                                   // alignment field that follows explicit
                                   // in the data structure.
    __int64 __ss_align;            // Field to force desired structure.
    char __ss_pad2[_SS_PAD2SIZE];  // 112 byte pad to achieve desired size;
                                   // _SS_MAXSIZE value minus size of
                                   // ss_family, __ss_pad1, and
                                   // __ss_align fields is 112.
};

typedef struct sockaddr_storage SOCKADDR_STORAGE;
typedef struct sockaddr_storage *PSOCKADDR_STORAGE;
typedef struct sockaddr_storage FAR *LPSOCKADDR_STORAGE;

#endif /* !IPPROTO_IPV6 */
#endif /* _WINSOCK2API_ */

#ifdef _WS2TCPIP_H_ 
/* This section gets included if ws2tcpip.h is included */

#ifndef IPV6_JOIN_GROUP

#define in6_addr in_addr6

// Macro that works for both IPv4 and IPv6
#define SS_PORT(ssp) (((struct sockaddr_in*)(ssp))->sin_port)

#define IN6ADDR_ANY_INIT        { 0 }
#define IN6ADDR_LOOPBACK_INIT   { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }

TPIPV6_EXTERN const struct in6_addr in6addr_any;
TPIPV6_EXTERN const struct in6_addr in6addr_loopback;

TPIPV6_INLINE int
IN6_ADDR_EQUAL(const struct in6_addr *a, const struct in6_addr *b)
{
    return (memcmp(a, b, sizeof(struct in6_addr)) == 0);
}

TPIPV6_INLINE int
IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *a)
{
    return IN6_ADDR_EQUAL(a, &in6addr_any);
}

TPIPV6_INLINE int
IN6_IS_ADDR_LOOPBACK(const struct in6_addr *a)
{
    return IN6_ADDR_EQUAL(a, &in6addr_loopback);
}

TPIPV6_INLINE int
IN6_IS_ADDR_MULTICAST(const struct in6_addr *a)
{
    return (a->s6_addr[0] == 0xff);
}

TPIPV6_INLINE int
IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *a)
{
    return ((a->s6_addr[0] == 0xfe) &&
            ((a->s6_addr[1] & 0xc0) == 0x80));
}

TPIPV6_INLINE int
IN6_IS_ADDR_SITELOCAL(const struct in6_addr *a)
{
    return ((a->s6_addr[0] == 0xfe) &&
            ((a->s6_addr[1] & 0xc0) == 0xc0));
}

TPIPV6_INLINE int
IN6_IS_ADDR_V4MAPPED(const struct in6_addr *a)
{
    return ((a->s6_addr[0] == 0) &&
            (a->s6_addr[1] == 0) &&
            (a->s6_addr[2] == 0) &&
            (a->s6_addr[3] == 0) &&
            (a->s6_addr[4] == 0) &&
            (a->s6_addr[5] == 0) &&
            (a->s6_addr[6] == 0) &&
            (a->s6_addr[7] == 0) &&
            (a->s6_addr[8] == 0) &&
            (a->s6_addr[9] == 0) &&
            (a->s6_addr[10] == 0xff) &&
            (a->s6_addr[11] == 0xff));
}

TPIPV6_INLINE int
IN6_IS_ADDR_V4COMPAT(const struct in6_addr *a)
{
    return ((a->s6_addr[0] == 0) &&
            (a->s6_addr[1] == 0) &&
            (a->s6_addr[2] == 0) &&
            (a->s6_addr[3] == 0) &&
            (a->s6_addr[4] == 0) &&
            (a->s6_addr[5] == 0) &&
            (a->s6_addr[6] == 0) &&
            (a->s6_addr[7] == 0) &&
            (a->s6_addr[8] == 0) &&
            (a->s6_addr[9] == 0) &&
            (a->s6_addr[10] == 0) &&
            (a->s6_addr[11] == 0) &&
            !((a->s6_addr[12] == 0) &&
              (a->s6_addr[13] == 0) &&
              (a->s6_addr[14] == 0) &&
              ((a->s6_addr[15] == 0) ||
               (a->s6_addr[15] == 1))));
}

TPIPV6_INLINE int
IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *a)
{
    return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 1);
}

TPIPV6_INLINE int
IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *a)
{
    return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 2);
}

TPIPV6_INLINE int
IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *a)
{
    return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 5);
}

TPIPV6_INLINE int
IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *a)
{
    return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 8);
}

TPIPV6_INLINE int
IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *a)
{
    return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 0xe);
}

/* Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP */

typedef struct ipv6_mreq {
    struct in6_addr ipv6mr_multiaddr;  // IPv6 multicast address.
    unsigned int    ipv6mr_interface;  // Interface index.
} IPV6_MREQ;

//
// Socket options at the IPPROTO_IPV6 level.
//
#define IPV6_UNICAST_HOPS       4  // Set/get IP unicast hop limit.
#define IPV6_MULTICAST_IF       9  // Set/get IP multicast interface.
#define IPV6_MULTICAST_HOPS     10 // Set/get IP multicast ttl.
#define IPV6_MULTICAST_LOOP     11 // Set/get IP multicast loopback.
#define IPV6_ADD_MEMBERSHIP     12 // Add an IP group membership.
#define IPV6_DROP_MEMBERSHIP    13 // Drop an IP group membership.
#define IPV6_JOIN_GROUP         IPV6_ADD_MEMBERSHIP
#define IPV6_LEAVE_GROUP        IPV6_DROP_MEMBERSHIP

//
// Socket options at the IPPROTO_UDP level.
//
#define UDP_CHECKSUM_COVERAGE   20  // Set/get UDP-Lite checksum coverage.

//
// Error codes from getaddrinfo().
//
#define EAI_AGAIN       WSATRY_AGAIN
#define EAI_BADFLAGS    WSAEINVAL
#define EAI_FAIL        WSANO_RECOVERY
#define EAI_FAMILY      WSAEAFNOSUPPORT
#define EAI_MEMORY      WSA_NOT_ENOUGH_MEMORY
#define EAI_NODATA      WSANO_DATA
#define EAI_NONAME      WSAHOST_NOT_FOUND
#define EAI_SERVICE     WSATYPE_NOT_FOUND
#define EAI_SOCKTYPE    WSAESOCKTNOSUPPORT

//
// Structure used in getaddrinfo() call.
//
typedef struct addrinfo {
    int ai_flags;              // AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST.
    int ai_family;             // PF_xxx.
    int ai_socktype;           // SOCK_xxx.
    int ai_protocol;           // 0 or IPPROTO_xxx for IPv4 and IPv6.
    size_t ai_addrlen;         // Length of ai_addr.
    char *ai_canonname;        // Canonical name for nodename.
    struct sockaddr *ai_addr;  // Binary address.
    struct addrinfo *ai_next;  // Next structure in linked list.
} ADDRINFO, FAR * LPADDRINFO;

//
// Flags used in "hints" argument to getaddrinfo().
//
#define AI_PASSIVE     0x1  // Socket address will be used in bind() call.
#define AI_CANONNAME   0x2  // Return canonical name in first ai_canonname.
#define AI_NUMERICHOST 0x4  // Nodename must be a numeric address string.

#ifdef __cplusplus
extern "C" {
#endif

WINSOCK_API_LINKAGE
int
WSAAPI
getaddrinfo(
    IN const char FAR * nodename,
    IN const char FAR * servname,
    IN const struct addrinfo FAR * hints,
    OUT struct addrinfo FAR * FAR * res
    );

#if INCL_WINSOCK_API_TYPEDEFS
typedef
int
(WSAAPI * LPFN_GETADDRINFO)(
    IN const char FAR * nodename,
    IN const char FAR * servname,
    IN const struct addrinfo FAR * hints,
    OUT struct addrinfo FAR * FAR * res
    );
#endif

WINSOCK_API_LINKAGE
void
WSAAPI
freeaddrinfo(
    IN struct addrinfo FAR * ai
    );

#if INCL_WINSOCK_API_TYPEDEFS
typedef
void
(WSAAPI * LPFN_FREEADDRINFO)(
    IN struct addrinfo FAR * ai
    );
#endif

#ifdef UNICODE
#define gai_strerror   gai_strerrorW
#else
#define gai_strerror   gai_strerrorA
#endif  /* UNICODE */

// WARNING: The gai_strerror inline functions below use static buffers, 
// and hence are not thread-safe.  We'll use buffers long enough to hold 
// 1k characters.  Any system error messages longer than this will be 
// returned as empty strings.  However 1k should work for the error codes 
// used by getaddrinfo().
#define GAI_STRERROR_BUFFER_SIZE 1024

TPIPV6_INLINE 
char *
gai_strerrorA(
    IN int ecode)
{
    DWORD dwMsgLen;
    static char buff[GAI_STRERROR_BUFFER_SIZE + 1];

    dwMsgLen = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM
                             |FORMAT_MESSAGE_IGNORE_INSERTS,
                              NULL,
                              ecode,
                              MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                              (LPSTR)buff,
                              GAI_STRERROR_BUFFER_SIZE,
                              NULL);

    return buff;
}

TPIPV6_INLINE 
WCHAR *
gai_strerrorW(
    IN int ecode
    )
{
    DWORD dwMsgLen;
    static WCHAR buff[GAI_STRERROR_BUFFER_SIZE + 1];

    dwMsgLen = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM
                             |FORMAT_MESSAGE_IGNORE_INSERTS,
                              NULL,
                              ecode,
                              MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                              (LPWSTR)buff,
                              GAI_STRERROR_BUFFER_SIZE,
                              NULL);

    return buff;
}

typedef int socklen_t;

WINSOCK_API_LINKAGE
int
WSAAPI
getnameinfo(
    IN  const struct sockaddr FAR * sa,
    IN  socklen_t       salen,
    OUT char FAR *      host,
    IN  DWORD           hostlen,
    OUT char FAR *      serv,
    IN  DWORD           servlen,
    IN  int             flags
    );

#if INCL_WINSOCK_API_TYPEDEFS
typedef
int
(WSAAPI * LPFN_GETNAMEINFO)(
    IN  const struct sockaddr FAR * sa,
    IN  socklen_t       salen,
    OUT char FAR *      host,
    IN  DWORD           hostlen,
    OUT char FAR *      serv,
    IN  DWORD           servlen,
    IN  int             flags
    );
#endif

#define NI_MAXHOST  1025  // Max size of a fully-qualified domain name.
#define NI_MAXSERV    32  // Max size of a service name.

//
// Flags for getnameinfo().
//
#define NI_NOFQDN       0x01  // Only return nodename portion for local hosts. 
#define NI_NUMERICHOST  0x02  // Return numeric form of the host's address.
#define NI_NAMEREQD     0x04  // Error if the host's name not in DNS.
#define NI_NUMERICSERV  0x08  // Return numeric form of the service (port #).
#define NI_DGRAM        0x10  // Service is a datagram service.

#ifdef __cplusplus
}
#endif

#endif /* !IPV6_JOIN_GROUP */
#endif /* _WS2TCPIP_H_ */

//
// Unless the build environment is explicitly targeting
// platforms that include built-in getaddrinfo() support,
// include the backwards-compatibility version of the APIs.
//
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT <= 0x0500)
#include "wspiapi.h"
#endif

#endif /* _TPIPV6_ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品日产第一区二区三区高清版| 久久国产乱子精品免费女| 成人高清伦理免费影院在线观看| 精品久久久久久久一区二区蜜臀| 麻豆国产欧美日韩综合精品二区| 欧美日韩的一区二区| 亚洲成av人片| 日韩女优视频免费观看| 国产揄拍国内精品对白| 国产欧美va欧美不卡在线| 99久久伊人精品| 一区二区三区鲁丝不卡| 欧美区视频在线观看| 久久精品国产免费看久久精品| 国产日韩精品视频一区| 91视视频在线观看入口直接观看www| 亚洲乱码中文字幕| 欧美剧情片在线观看| 国产一区二区三区在线观看免费 | 99re这里只有精品首页| 一区二区三区四区在线免费观看 | 久久午夜羞羞影院免费观看| 国产成人午夜电影网| 亚洲精品中文在线影院| 欧美一三区三区四区免费在线看| 国产一区二区三区久久悠悠色av| 中文字幕一区二区不卡| 欧美肥胖老妇做爰| 国产成人精品免费一区二区| 亚洲地区一二三色| 久久久综合视频| 色婷婷国产精品综合在线观看| 美女看a上一区| 国产精品久久久久国产精品日日| 欧美日韩一区二区三区不卡| 国产美女精品一区二区三区| 一区二区高清视频在线观看| 精品国产亚洲一区二区三区在线观看| av中文字幕一区| 韩国精品主播一区二区在线观看| 亚洲欧洲精品一区二区三区 | 久久综合久久久久88| 色欧美88888久久久久久影院| 久久成人免费日本黄色| 一区二区三区日韩在线观看| 久久久久高清精品| 亚洲人成网站影音先锋播放| 国产在线观看一区二区| 国产久卡久卡久卡久卡视频精品| 成人aa视频在线观看| 精品福利视频一区二区三区| 国产一区在线看| 一本色道久久综合亚洲91| 国产日韩欧美精品一区| 奇米色777欧美一区二区| 欧美日本在线一区| 一本一道久久a久久精品 | 亚洲第一综合色| 亚洲日本青草视频在线怡红院| 日韩精品一区二区三区在线| 欧美日韩精品欧美日韩精品一综合| 国产凹凸在线观看一区二区| 久久精品av麻豆的观看方式| 亚洲一区二区三区中文字幕| 国产精品不卡在线观看| 国产日韩欧美高清在线| 欧美大片国产精品| 日韩一级成人av| 4438成人网| 91精品在线一区二区| 欧美日韩在线播放| 在线观看av一区二区| 色猫猫国产区一区二在线视频| aaa欧美日韩| av欧美精品.com| 成人av电影观看| 岛国一区二区三区| jvid福利写真一区二区三区| 亚洲欧美日韩久久| 在线观看网站黄不卡| 亚洲一区二区av电影| 精品国产一二三| 久久久精品免费网站| 久久国产婷婷国产香蕉| 日本韩国一区二区| 色天天综合久久久久综合片| 奇米色一区二区| 国产精品麻豆视频| 日韩欧美高清一区| 91麻豆精品国产无毒不卡在线观看| 国产麻豆日韩欧美久久| 日本视频免费一区| 亚洲欧美另类图片小说| 国产精品国产三级国产aⅴ入口 | 免费高清成人在线| 亚洲女人的天堂| 自拍偷自拍亚洲精品播放| 国产欧美一区二区三区网站| 精品奇米国产一区二区三区| 91麻豆精品久久久久蜜臀| 欧美最新大片在线看| 成人动漫在线一区| 国产69精品久久久久777| 国产成人综合在线| 国产69精品久久99不卡| 欧美揉bbbbb揉bbbbb| 色激情天天射综合网| 麻豆国产精品777777在线| 欧美二区三区91| 69精品人人人人| 欧美成人a∨高清免费观看| 免费成人美女在线观看.| 久久九九久精品国产免费直播| 国产婷婷精品av在线| 日韩视频在线永久播放| 久久精品免视看| 亚洲一区二区三区四区在线| 蜜臀99久久精品久久久久久软件| 国产麻豆精品在线| 一本色道久久综合狠狠躁的推荐| 一区二区三区四区av| 国产精品系列在线播放| 97久久人人超碰| 91电影在线观看| 精品免费国产一区二区三区四区| 久久久久国色av免费看影院| 日韩毛片在线免费观看| 亚洲午夜羞羞片| 在线免费不卡视频| 国产亚洲人成网站| 国产网站一区二区三区| 自拍偷拍欧美精品| 精品在线一区二区三区| 色猫猫国产区一区二在线视频| 精品日韩在线观看| 亚洲欧美偷拍三级| 国产呦萝稀缺另类资源| 欧美精品久久99| 亚洲欧美一区二区久久| 国产精品乡下勾搭老头1| 制服丝袜日韩国产| 亚洲激情五月婷婷| 成年人网站91| 久久夜色精品一区| 免费人成精品欧美精品 | 蜜桃一区二区三区在线| 色视频欧美一区二区三区| 欧美经典一区二区三区| 国产一区二区三区免费看| 欧美男男青年gay1069videost| 亚洲美女少妇撒尿| fc2成人免费人成在线观看播放 | 日韩视频中午一区| 亚洲高清免费在线| 色综合色综合色综合色综合色综合 | 亚洲一二三区在线观看| 91免费视频网址| 国产精品美女久久久久高潮| 国产一区二区三区av电影| 欧美一级片在线| 免费在线成人网| 制服.丝袜.亚洲.另类.中文| 五月天亚洲精品| 欧美精品vⅰdeose4hd| 香蕉久久一区二区不卡无毒影院| 欧洲一区在线电影| 亚洲第一激情av| 欧美精品久久一区二区三区| 亚洲成人三级小说| 欧美日韩在线免费视频| 国产综合成人久久大片91| 欧美大尺度电影在线| 美女视频黄免费的久久| 亚洲精品在线免费观看视频| 国内精品不卡在线| 久久久久久电影| 成人污污视频在线观看| 国产精品私人影院| 99精品热视频| 亚洲电影一区二区| 91麻豆精品国产91久久久久久 | 久久影音资源网| 国产一区二区三区| 亚洲国产精品二十页| 99久久精品情趣| 亚洲一区二区五区| 欧美一区二区播放| 国产高清精品久久久久| 中文字幕亚洲一区二区va在线| 在线观看国产日韩| 日韩激情中文字幕| 久久久久久久电影| 色综合一区二区| 日本欧美一区二区| 久久在线观看免费| 972aa.com艺术欧美| 婷婷久久综合九色综合绿巨人| 精品欧美黑人一区二区三区| 国产99久久久国产精品免费看 | 午夜精品久久久久久久99水蜜桃|