IP地址声明语句.doc
文本预览下载声明
#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
显示全部