WinSock网络编程基础
Winsock是Windows环境下的网络编程接口,它最初基于UNIX环境下的BSD Socket,是一个与网络协议无关的编程接口。在Visual Studio中可以使用WinSock API开发网络应用程序,实现计算机之间的通信。
构建WinSock应用程序框架
在使用WinSock 2.2实现网络通信功能时,需要引用头文件winsock2.h和库文件ws2_32.lib,代码如下:
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")
WSADATA是一种数据结构,用来存储被WSAStart函数调用后返回的Windows Sockets数据,包含了系统所支持的Winsock版本信息
WSAStartup()函数用于初始化Windows Sockets,并返回WSADATA结构体。只有调用WSAStartup()函数后,应用程序才能调用其它Windows Sockets API 函数,实现网络通信
下面是使用WinSock2.2实现网络通信的应用程序框架
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")
//主函数
int main()
{
WSADATA wsaData;
//初始化WinSock2.2
if (WSAStartup(MAKEWORD(2,2), &wsaData) !=0)
{
printf("初始化失败");
return 0;
}
//使用WinSock实现网络通信
//......
//最后应该做一些清除工作
if (WSACleanup() == SOCKET_ERROR)
{
printf("WSACleanup出错!");
return 0;
}
}
Socket函数
socket()函数
socket()函数用于创建与指定的服务提供者绑定嵌套字,函数原型如下:
SOCKET socket(
int af, //指定协议的地址家族,通常使用AF_INET
int type, //指定套接字的类型
int protocol //原始套接字,可以用于接收本机网卡上的数据帧或数据包
);
套接字类型 | 说明 |
---|---|
SOCK_STREAM | 提供顺序、可靠、双向和面向连接的字节流数 |