文档详情

IP地址声明语句.doc

发布:2017-06-30约3.65万字共7页下载文档
文本预览下载声明
#define INADDR_LOOPBACK 0x7f000001 定义IP地址 0x7f000001 代表127.0.0.1 unsigned long addr=inet_addr(192.1.8.84) 将常用的用点分开的IP地址转换为unsigned long类型的IP地址的函数 #define INADDR_ANY (u_long)0表示所有计算机的IP地址 套接字的具体运用实例 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ) wVersionRequested为打算加载Winsock的版本,一般如下设置: wVersionRequested=MAKEWORD(2,0) 或者直接赋值:wVersionRequested=2 LPWSADATA为初始化Socket后加载的版本的信息,定义如下: typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; } WSADATA, FAR * LPWSADATA; 如果加载成功后数据为: wVersion=2表示加载版本为2.0。 wHighVersion=514表示当前系统支持socket最高版本为2.2。 szDescription=WinSock 2.0 szSystemStatus=Running表示正在运行。 iMaxSockets=0表示同时打开的socket最大数,为0表示没有限制。 iMaxUdpDg=0表示同时打开的数据报最大数,为0表示没有限制。 lpVendorInfo没有使用,为厂商指定信息预留。 该函数使用方法: WORD wVersion=MAKEWORD(2,0); WSADATA wsData; int nResult= WSAStartup(wVersion,wsData); if(nResult !=0) { //错误处理 } 2、创建套接字:(服务器端和客户端) SOCKET socket( int af, int type, int protocol ); af为网络地址类型,一般为AF_INET,表示在Internet域中使用。 type为套接字类型,前面已经介绍了。 protocol为指定网络协议,一般为IPPROTO_IP。 用法: SOCKET sock=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); 如果没有获得套接字便生成INVALID_SOCKET if(sock==INVALID_SOCKET) { //错误处理 } 3、套接字的绑定:将本地地址绑定到所创建的套接字上。(服务器端和客户端) int bind( SOCKET s, const struct sockaddr FAR * name, int namelen ) s为已经创建的套接字。 name为socket地址结构,为sockaddr结构,如前面讨论的,我们一般使用sockaddr_in 结构,在使用再强制转换为sockaddr结构。 namelen为地址结构的长度。 用法: sockaddr_in addr; addr. sin_family=AF_INET; addr. sin_port= htons(0); //保证字节顺序 addr. sin_addr.s_addr= inet_addr(192.1.8.84) int nResult=bind(s,(sockaddr*)addr,sizeof(sockaddr)); if(nResult==SOCKET_ERROR) { //错误处理 } 4、 套接字的监听:(服务器端) int listen(SOCKET s, int backlog ) s为一个已绑定但未联接的套接字。 backlog为指定正在等待联接的最大队列长度,这个参数非常重要,因为服务器一般可 以提供多个连接。 用法: int nResult=listen(s,5) //最多5个连接 if(nResult==SOCKET_ERROR) { //错误处理 } 5、套接字等待连接::(服务器端) SOCKET accept( SOCKET s, struct sockaddr FAR
显示全部
相似文档