windows下socket常用API
一.WinSock DLL
1.初始化WinSock DLL
int WSAStartup(
WORD wVersionRequested, //调用者能使用的Windows Socket支持的最高版本。高位指定副版本,低位指定主版本号
LPWSADATA lpWSAData //指向WSADATA的指针,用于接收Windows Socket的实现细节
);
//该函数在一个进程中初始化WS2_32.dll的使用
2.释放WinSock DLL资源
int WSACleanup(void);
二.套接字
1.创建套接字
SOCKET socket(
int af, //地址家族说明
int type, //新套接字类型说明
int protocol //套接字使用协议,特定于所表示的地址家族,0表示默认的协议
);
2.从容关闭套接字
int shutdown(
SOCKET s, //套接字描述符
int how //描述不在允许什么类型操作的标志
);
3.关闭套接字
int closesocket(
SOCKET s
);
三.服务器端
1.绑定
int bind(
SOCKET s, //一个未绑定套接字的描述符;
const struct sockadd*name, //从SOCKADDR结构分配套接字的地址
int namelen //name所包含的字节长度,以字节计
);
2.监听
int listen(
SOCKET s, //表示一个已绑定但并未连接的套接字
int backlog //待觉连接队列的最大长度
);
listen函数将套接字置入监听状态,等候进入的连接
3.接收
SOCKET accept(
SOCKET s, //一个用listen函数置入监听状态的套接字描述符,accept函数返回的套接字才是真正建立了连接
struct sockaddr*addr, //可选的指针,指向用于接收连接实体的缓冲区
int*addrlen //可选的指针,指向一个包含addr长度的整数
);
//accept函数允许一个套接字上接受客户连接
四.客户端
1.创建连接
int connect(
SOCKET s, //标定一个未绑定套接字的描述符
const struct sockaddr*name, //应与之建立连接的套接字名称
int namelen //名称的长度
);
//connect函数建立一个到指定套接字的链接
五.数据传输
1.发送数据
int send(
SOCKET s, //标识一个已经建立连接套接字的描述符
const char*buf, //包含待传输数据的缓冲区
int len, //buf中数据的长度
int flags //指定调用执行方式的指示器
);
//send函数在一个已建立连接的套接字上发送数据
2.发送数据到
int sendto(
SOCKET s, //表示一个可能已连接的标示符
const char*buf,
int len,
int flags,
const struct sockaddr*to, //可选的指针,指向目标套接字的地址
int tolen
);
3.接收数据
int recv(
SOCKET s, //标识一个已建立连接套接字的描述符
char*buf,
int len,
int flags
);
//resv函数接收从一个已连接或绑定的套接字上获取传来的数据。
4.接收数据来自
int recvfrom(
SOCKET s,
char *buf, //接收传来的数据的缓冲区
int len,
int flags,
struct sockaddr*from, //可选的指针,指向一个在返回时保存源地址的缓冲区
int*fromlen
);
六.套接字地址信息
1.获取对方的套接字地址信息
int getpeername(
SOCKET s,
struct sockaddr*name,
int*namelen
);
//getpeername函数获取与一个套接字相连接的计算机的名称
2.获取本地的套接字地址信息
int getsockname(
SOCKET s, //标识一个已连接的套接字的描述符
struct sockaddr FAR* name, //用于获取本地的套接字socketaddr结构
int FAR* namlen // 指向名称结构尺寸,以字节计
);
//getsockname函数获取本地socket名称
七.其他
1.获取最近的错误代码
int WSAGetLastError(void);