青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Socket學(xué)習筆記之一(常用基本定義)

常用類型的定義:
(以下定義從Winsock2.h文件中截取)
/*
?* The new type to be used in all
?* instances which refer to sockets.
?*/
typedef UINT_PTR??????? SOCKET;//SOCKET原來就是一個unsigned int的指針而已

/*
?* Select uses arrays of SOCKETs.? These macros manipulate such
?* arrays.? FD_SETSIZE may be defined by the user before including
?* this file, but the default here should be >= 64.
?*
?* CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
?* INCLUDED IN WINSOCK2.H EXACTLY AS SHOWN HERE.
?*/
#ifndef FD_SETSIZE
#define FD_SETSIZE????? 64
#endif /* FD_SETSIZE */
typedef struct fd_set {
??????? u_int fd_count;?????????????? /* how many are SET? */
??????? SOCKET? fd_array[FD_SETSIZE];?? /* an array of SOCKETs */
} fd_set;//fd_set是用來select的,表示一個集合,STL中不是有個模板類set么
//對fd_set結(jié)構(gòu),Winsock2.h中還定義了四個宏定義來操作fd_set
//FD_CLR(fd, set),FD_SET(fd, set),FD_ZERO(set),FD_ISSET(fd, set)
//一般用法是先定義一個fd_set,使用之前調(diào)用fd_zero,再將一個socket放到fd_set中
//經(jīng)過一系列操作后,用fd_isset判斷某個socket是否還在set中。
//SOCKET fd;
//......
//fd_set ReadFds;
//FD_ZERO(&ReadFds);
//FD_SET(fd,&ReadFds);
//.....
//if ( FD_ISSET(fd,&ReadFds) )
//.....
/*
?* Structure used in select() call, taken from the BSD file sys/time.h.
?*/
struct timeval {
??????? long??? tv_sec;???????? /* seconds */
??????? long??? tv_usec;??????? /* and microseconds */
};//這個也是用于select函數(shù)中的,超時參數(shù)
struct? hostent {//表示主機的結(jié)構(gòu)
??????? char??? FAR * h_name;?????????? /* official name of host */
??????? char??? FAR * FAR * h_aliases;? /* alias list */
??????? short?? h_addrtype;???????????? /* host address type */
??????? short?? h_length;?????????????? /* length of address */
??????? char??? FAR * FAR * h_addr_list; /* list of addresses */
#define h_addr? h_addr_list[0]????????? /* address, for backward compat */
};
/*
?* Internet address (old style... should be updated)//暈,什么時候update?
?*///原來每次看到in_addr結(jié)構(gòu)都不知道為什么叫in_addr,原來是這樣。。。
struct in_addr {
??????? union {
??????????????? struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
??????????????? struct { u_short s_w1,s_w2; } S_un_w;
??????????????? u_long S_addr; //大部分都用這個變量就夠了(一個ip地址32位剛好一個unsigned long)
??????? } S_un;
#define s_addr? S_un.S_addr //這樣定義以后用的很方便,in_addr.s_addr就可以了。
??????????????????????????????? /* can be used for most tcp & ip code */
#define s_host? S_un.S_un_b.s_b2
??????????????????????????????? /* host on imp */
#define s_net?? S_un.S_un_b.s_b1
??????????????????????????????? /* network */
#define s_imp?? S_un.S_un_w.s_w2
??????????????????????????????? /* imp */
#define s_impno S_un.S_un_b.s_b4
??????????????????????????????? /* imp # */
#define s_lh??? S_un.S_un_b.s_b3
??????????????????????????????? /* logical host */
};
//這b1,b2,b3,b4,w1,w2不知道有乜用,代表乜意思。。。
#endif
/*
?* Socket address, internet style.
?*/
struct sockaddr_in {
??????? short?? sin_family;//地址家族一般都是AF_INET或者PF_INET
??????? u_short sin_port;//端口
??????? struct? in_addr sin_addr;//ip地址
??????? char??? sin_zero[8];
};
/*
?* Structure used by kernel to store most//計算機內(nèi)核中處理用的是這種表示
?* addresses.
?*/
struct sockaddr {
??????? u_short sa_family;????????????? /* address family */
??????? char??? sa_data[14];??????????? /* up to 14 bytes of direct address */
};
//仔細算一下sockaddr_in和sockaddr兩個結(jié)構(gòu)的大小是一樣,所以可以直接強制類型轉(zhuǎn)換賦值
//比如accept函數(shù)其中一個參數(shù)類型struct sockaddr FAR * ,你如果有一個struct sockaddr_in myaddr
//就可以直接accept(..(struct sockaddr *)myaddr.....
/*
?* WinSock 2 extension -- WSABUF and QOS struct, include qos.h
?* to pull in FLOWSPEC and related definitions
?*/
typedef struct _WSABUF {//緩沖區(qū),一般ms在帶WSA前綴的accept,receive,send等函數(shù)中才用到
??? u_long????? len;???? /* the length of the buffer */
??? char FAR *? buf;???? /* the pointer to the buffer */
} WSABUF, FAR * LPWSABUF;
typedef struct WSAData {
??????? WORD??????????????????? wVersion;
??????? WORD??????????????????? wHighVersion;
#ifdef _WIN64
??????? unsigned short????????? iMaxSockets;
??????? unsigned short????????? iMaxUdpDg;
??????? char FAR *????????????? lpVendorInfo;
??????? char??????????????????? szDescription[WSADESCRIPTION_LEN+1];
??????? char??????????????????? szSystemStatus[WSASYS_STATUS_LEN+1];
#else
??????? char??????????????????? szDescription[WSADESCRIPTION_LEN+1];
??????? char??????????????????? szSystemStatus[WSASYS_STATUS_LEN+1];
??????? unsigned short????????? iMaxSockets;
??????? unsigned short????????? iMaxUdpDg;
??????? char FAR *????????????? lpVendorInfo;
#endif
} WSADATA, FAR * LPWSADATA;//其實這個結(jié)構(gòu)不需要怎么了解,因為它在用的很少,就是在調(diào)用WSAStartup才用到一次

/*
?* Address families.
?*/
#define AF_UNSPEC?????? 0?????????????? /* unspecified */
/*
?* Although? AF_UNSPEC? is? defined for backwards compatibility, using
?* AF_UNSPEC for the "af" parameter when creating a socket is STRONGLY
?* DISCOURAGED.??? The? interpretation? of? the? "protocol"? parameter
?* depends? on the actual address family chosen.? As environments grow
?* to? include? more? and? more? address families that use overlapping
?* protocol? values? there? is? more? and? more? chance of choosing an
?* undesired address family when AF_UNSPEC is used.
?*/
#define AF_UNIX???????? 1?????????????? /* local to host (pipes, portals) */
#define AF_INET???????? 2?????????????? /* internetwork: UDP, TCP, etc. */
#define AF_IMPLINK????? 3?????????????? /* arpanet imp addresses */
#define AF_PUP????????? 4?????????????? /* pup protocols: e.g. BSP */
#define AF_CHAOS??????? 5?????????????? /* mit CHAOS protocols */
#define AF_NS?????????? 6?????????????? /* XEROX NS protocols */
#define AF_IPX????????? AF_NS?????????? /* IPX protocols: IPX, SPX, etc. */
#define AF_ISO????????? 7?????????????? /* ISO protocols */
#define AF_OSI????????? AF_ISO????????? /* OSI is ISO */
#define AF_ECMA???????? 8?????????????? /* european computer manufacturers */
#define AF_DATAKIT????? 9?????????????? /* datakit protocols */
#define AF_CCITT??????? 10????????????? /* CCITT protocols, X.25 etc */
#define AF_SNA????????? 11????????????? /* IBM SNA */
#define AF_DECnet?????? 12????????????? /* DECnet */
#define AF_DLI????????? 13????????????? /* Direct data link interface */
#define AF_LAT????????? 14????????????? /* LAT */
#define AF_HYLINK?????? 15????????????? /* NSC Hyperchannel */
#define AF_APPLETALK??? 16????????????? /* AppleTalk */
#define AF_NETBIOS????? 17????????????? /* NetBios-style addresses */
#define AF_VOICEVIEW??? 18????????????? /* VoiceView */
#define AF_FIREFOX????? 19????????????? /* Protocols from Firefox */
#define AF_UNKNOWN1???? 20????????????? /* Somebody is using this! */
#define AF_BAN????????? 21????????????? /* Banyan */
#define AF_ATM????????? 22????????????? /* Native ATM Services */
#define AF_INET6??????? 23????????????? /* Internetwork Version 6 */
#define AF_CLUSTER????? 24????????????? /* Microsoft Wolfpack */
#define AF_12844??????? 25????????????? /* IEEE 1284.4 WG AF */
#define AF_IRDA???????? 26????????????? /* IrDA */
#define AF_NETDES?????? 28????????????? /* Network Designers OSI & gateway
?????????????????????????????????????????? enabled protocols */
#define AF_TCNPROCESS?? 29
#define AF_TCNMESSAGE?? 30
#define AF_ICLFXBM????? 31

#define AF_MAX????????? 32

/*
?* Protocol families, same as address families for now.
?*/
#define PF_UNSPEC?????? AF_UNSPEC
#define PF_UNIX???????? AF_UNIX
#define PF_INET???????? AF_INET
#define PF_IMPLINK????? AF_IMPLINK
#define PF_PUP????????? AF_PUP
#define PF_CHAOS??????? AF_CHAOS
#define PF_NS?????????? AF_NS
#define PF_IPX????????? AF_IPX
#define PF_ISO????????? AF_ISO
#define PF_OSI????????? AF_OSI
#define PF_ECMA???????? AF_ECMA
#define PF_DATAKIT????? AF_DATAKIT
#define PF_CCITT??????? AF_CCITT
#define PF_SNA????????? AF_SNA
#define PF_DECnet?????? AF_DECnet
#define PF_DLI????????? AF_DLI
#define PF_LAT????????? AF_LAT
#define PF_HYLINK?????? AF_HYLINK
#define PF_APPLETALK??? AF_APPLETALK
#define PF_VOICEVIEW??? AF_VOICEVIEW
#define PF_FIREFOX????? AF_FIREFOX
#define PF_UNKNOWN1???? AF_UNKNOWN1
#define PF_BAN????????? AF_BAN
#define PF_ATM????????? AF_ATM
#define PF_INET6??????? AF_INET6

#define PF_MAX????????? AF_MAX


下面這些函數(shù)屬于基本常用函數(shù),下次學(xué)習
u_long htonl(u_long hostlong)
u_short htons(u_short hostshort)
u_long ntohl(u_long netlong)
u_short ntohs(u_short netshort)
unsigned long inet_addr(const char* cp);
int getpeername(SOCKET s,struct sockaddr* name,int* namelen);
int getsockname(SOCKET s,struct sockaddr* name,int* namelen);
char* FAR inet_ntoa(struct in_addr in);
struct HOSTENT* FAR gethostbyaddr(const char* addr,int len,int type);
struct hostent* FAR gethostbyname(const char* name);
int gethostname(char* name,int namelen);
int WSAGetLastError(void);
int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);
int ioctlsocket(SOCKET s,long cmd,u_long* argp);
int listen(SOCKET s,int backlog);
SOCKET accept(SOCKET s,struct sockaddr* addr,int* addrlen);
int send(SOCKET s,const char* buf,int len,int flags);
int recv(SOCKET s,char* buf,int len,int flags);



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=541158

posted on 2006-04-20 17:28 楊粼波 閱讀(1675) 評論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成人午夜激情视频| 亚洲欧美日韩精品综合在线观看| 亚洲欧洲日本专区| 一色屋精品视频在线观看网站| 国产精品福利在线| 国产精品视频一二| 国产一区二区三区成人欧美日韩在线观看| 国产免费亚洲高清| 在线成人av| 一区二区高清视频在线观看| 亚洲欧美日韩成人高清在线一区| 午夜精品一区二区三区四区| 久久先锋资源| 日韩视频―中文字幕| 亚洲欧美欧美一区二区三区| 久久深夜福利| 欧美午夜美女看片| 影音先锋久久久| 亚洲一区自拍| 欧美成人精品激情在线观看| 亚洲视频一区二区在线观看| 久久久国际精品| 国产精品福利av| 亚洲精品你懂的| 欧美一区二区日韩| 亚洲精品国产精品乱码不99按摩| 亚洲视频电影图片偷拍一区| 久久亚洲精品一区二区| 国产精品久久久久久久一区探花| 依依成人综合视频| 欧美一级视频免费在线观看| 亚洲国产中文字幕在线观看| 性高湖久久久久久久久| 欧美天堂亚洲电影院在线播放| 尤物yw午夜国产精品视频| 一区二区三区日韩精品视频| 国产精品影视天天线| 亚洲黄色一区| 久久国产精品一区二区三区四区| 亚洲精品国产视频| 美女露胸一区二区三区| 国产精品一区二区三区四区五区| 99re热精品| 欧美福利视频在线| 久久久久综合一区二区三区| 国产亚洲aⅴaaaaaa毛片| 亚洲午夜高清视频| 亚洲国产精品久久人人爱蜜臀 | 亚洲精品一品区二品区三品区| 欧美在线播放高清精品| 国产精品网曝门| 亚洲午夜免费福利视频| 91久久精品日日躁夜夜躁欧美| 久久美女性网| 精品av久久久久电影| 久久gogo国模啪啪人体图| 一区二区av在线| 欧美午夜在线一二页| 亚洲一区二区三区乱码aⅴ| 亚洲精品美女久久7777777| 欧美精品偷拍| 一区二区三区日韩在线观看| 亚洲毛片在线观看.| 欧美特黄一级| 欧美一区二区精品| 久久久91精品国产| 亚洲第一视频| 最新成人av网站| 欧美日韩在线播放三区四区| 亚洲一区三区视频在线观看| 一区二区三区色| 国产精品一区在线观看| 欧美综合国产精品久久丁香| 午夜精品剧场| 亚洲成人在线网| 亚洲电影免费| 国产精品yjizz| 欧美资源在线| 欧美1区2区视频| 一本久久a久久免费精品不卡| 一区二区三区欧美视频| 国内精品久久久久国产盗摄免费观看完整版 | 欧美在线首页| 亚洲第一页在线| 亚洲乱码一区二区| 国产毛片精品视频| 免费不卡亚洲欧美| 欧美日韩在线免费| 久久精品99国产精品日本| 蜜臀av性久久久久蜜臀aⅴ| 在线一区二区三区四区五区| 午夜久久电影网| 欧美aa在线视频| 亚洲欧洲一级| 一区一区视频| 欧美**字幕| 久久免费国产精品1| 免费亚洲电影在线| 午夜精品成人在线| 欧美xxxx在线观看| 久久国产精彩视频| 欧美日韩性生活视频| 快she精品国产999| 国产精品进线69影院| 欧美激情视频一区二区三区免费 | 欧美国产在线电影| 欧美一区二区视频在线观看2020 | 欧美激情精品久久久久久蜜臀 | 亚洲精品久久久蜜桃| 亚洲欧美一区二区原创| 日韩亚洲欧美精品| 久久米奇亚洲| 久久激情久久| 国产精品高潮呻吟久久av黑人| 亚洲高清电影| 一区二区三区在线高清| 亚洲午夜精品久久久久久app| 亚洲开发第一视频在线播放| 欧美一级视频| 欧美一区二区精美| 国产精品毛片大码女人| 999在线观看精品免费不卡网站| 亚洲国产欧美日韩精品| 久久久999| 噜噜噜91成人网| 国产午夜精品久久久| 亚洲永久精品国产| 亚洲欧美一级二级三级| 欧美性猛交xxxx乱大交退制版| 亚洲精品日本| 日韩图片一区| 欧美日韩精品一区视频| 亚洲精品美女在线| 日韩亚洲欧美一区| 欧美激情精品久久久久久免费印度| 免费一区二区三区| 1000精品久久久久久久久| 久久精品国产一区二区三区| 久久精品女人的天堂av| 国产视频一区三区| 久久爱www久久做| 久久蜜桃香蕉精品一区二区三区| 国产一区二区在线观看免费| 久久精品一二三区| 久久一区免费| 亚洲国产精品999| 欧美a级理论片| 亚洲免费视频成人| 欧美性jizz18性欧美| 亚洲一区视频在线| 久久午夜精品一区二区| 在线日韩中文字幕| 欧美黄色免费网站| 一本色道久久综合亚洲精品按摩| 亚洲女性喷水在线观看一区| 国产精品永久免费在线| 久久精品成人一区二区三区| 欧美激情91| 亚洲欧美在线播放| 伊大人香蕉综合8在线视| 蜜臀a∨国产成人精品| 99在线精品观看| 久久久久.com| 亚洲精品免费观看| 国产精品免费福利| 久久综合一区| 中国女人久久久| 久久久综合免费视频| a4yy欧美一区二区三区| 国产三区二区一区久久| 老牛影视一区二区三区| 一区二区三区你懂的| 久久亚洲综合| 亚洲一区二区三区免费观看| 国产综合视频在线观看| 欧美日韩国产综合久久| 久久精品国产清高在天天线| 亚洲精品乱码久久久久久久久| 久久精品99国产精品酒店日本| 亚洲精品免费一二三区| 国产午夜精品在线观看| 欧美日韩精品欧美日韩精品 | 99re66热这里只有精品3直播| 国产精品自在线| 欧美精品福利在线| 久久久久久久网| 亚洲影院色在线观看免费| 亚洲日本aⅴ片在线观看香蕉| 久久精品二区三区| 亚洲在线一区| 99国产精品国产精品毛片| 狠狠色丁香婷婷综合影院| 欧美调教视频| 欧美国产三区| 免费美女久久99| 久久久久国产精品一区| 香蕉久久精品日日躁夜夜躁| av不卡在线看| 99在线|亚洲一区二区| 亚洲日产国产精品|