函数connect
函数功能:将一个套接字连接。该函数原型声明:
int connect(
SOCKET s,
const struct sockaddr FAR* name,
int namelen
);
参数说明:
s:是准备接受数据的套接字。
name:设定连接服务器的地址信息;
namelen:指定服务器端地址的长度。
函数recvfrom
函数功能:将接受一个数据报信息并保存源地址。其原型声明如下:
int recvfrom(
SOCKET s,
char* buf,
int len,
int flags,
struct sockaddr* from,
int* fromlen
);
参数说明:
s:是指准备接受数据的套接字。
buf:是一个指向缓冲区的指针,用于存储接受的数据信息。
len:是缓冲区的长度。
flags:指定调用方式。主要有两个值。一个是MSG_PEEK, 查看当前数据。数据将被复制到缓冲区中,但并不从输入队列中删除,另一个MSG_OOB,处理带外数据。
from:是一个指向地址结构体的指针,主要用来接受发送数据方的地址信息;
fromlen:是一个整型的指针,并且它是一个in/out类型的参数,表明在调用前需要给它指定一个初始值,当函数调用之后,会通过这个参数返回一个地址结构的大小。
函数sendto
函数功能:该函数将和一个特定的目的方发送数据,其原型声明如下:
int sendto(
SOCKET s,
const char* buf,
int len,
int flags,
const struct sockaddr* to,
int tolen
);
参数说明:
s:是一个(可能已建立连接)的套接字描述符;
buf:是一个指向缓冲区的指针,用于存放发送的数据信息。
len:指缓冲区的长度。
flags:指定调用方式。
to:是一个可选指针,指定目标套接的地址
tolen:是to中指定的地址长度。
函数htons 和htonl
htons函数是将一个u_short类型的值从主机字节顺序转换为TCP/IP的网络字节顺序。其原型声明如下:
u_short htons( u_short hostshort);
htonl函数是将一个 u_long的值从主机字节顺序转换为TCP/IP网络字节顺序。其原型声明如下:
u_long htonl(u_long hostlong);
函数AfxSocketInit
如果使用MFC框架,一般多使用这个函数AfxSocketInit函数。函数声明:
BOOL AfxSocketInit(
WSADATA* lpwsaData = NULL
);
参数说明:
lpwsaData:是指向WSADATA结构体的指针。该函数内部调用WSAStartup函数来加载套接字库,并且该函数加载的是1.1版本的套接字库。如果读者有兴趣的话,可以在MFC提供源代码中查看一下该函数的源代码。使用这个函数还有一个好处,它可以确保应用程序在终止之前,调用WSACleanup函数以终止对套接字字库用的使用。