1 / 24
文档名称:

WinSocket编程.doc

格式:doc   大小:58KB   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

WinSocket编程.doc

上传人:1314042**** 2021/2/23 文件大小:58 KB

下载得到文件列表

WinSocket编程.doc

文档介绍

文档介绍:默认分类 2009-12-07 10:33:56 阅读164 评论0 字号:大中小
什么是Socket
接触网络编程当然要了解Socket,Socket(套接字)是一种网络编程接口,Socket提供了很多灵活的函数,帮助程序员写出高效的网络应用。Socket分为BSD UNIX和windows两个版本。
在win32平台上的Winsock编程都要经过下列基本步骤:
定义变量——获得Winsock版本——加载Winsock库——初始化——创建套接字——设置套接字——关闭套接字——卸载Winsock库
使用winsock2 API编程,必须包含头文件winsock2h (链接环境WS2_32LIB),头文件winsockh(WSOCK32LIB)是为了兼容winsock1程序时使用的,另外mswsockh(MSWSOCKDLL)是微软的扩展类,用于开发高性能的winsock程序。
准备好后,你就可以着手建立你的第一个网络程序了。
二, Socket编程的基本过程
Socket通信分为面向连接的通信(TCP)和面向无连接的通信(UDP),通信流程如下:

面向连接的通信

无连接的通信
1,Winsock初始化和结束
每一个winsock应用程序必须首先加载相应的winsock dll版本。方法是调用:
int WSAStartup(
WORD wVersionRequested, 库版本,高字节副版本,低字节主版本
LPWSADATA lpWSAData 结构指针,函数自动填充该结构。
); 函数调用成功返回0
可以用宏MAKEWORD(x, y)用来指定第一个参数的值

2,建立套接字
套接字是传输提供者的一个句柄。
SOCKET socket (
int af,
int type,
int protocol IPPROTO_TCP, IPPROTO_UDP, 0(如果不想指定)
);
第一个参数指定通信协议的协议族,AF_INET(IPv4)或 AF_INET6(IPv6)(因为Socket是网络编程接口而不是一个协议,它使用流行的网络协议(TCP/IP,IPX)为应用程序提供的一个编程接口。)
第二个参数指定要创建的套接字的类型。SOCK_STREAM(TCP流套接字), SOCK_ DGRAM(UDP 数据包套接字),SOCK_RAW(原始套接字)
第三个参数指定应用程序所指定应用程序所使用的通信协议。
函数成功返回套接字描述符,失败返回INVALID_SOCKET

3,配置套接字
当创建一个套接字后,再进行网络通信之前,必须先配置Socket。面向连接的客户端Socket通过调用connect函数在Socket数据结构中保存地址和远端信息。无连接客户端,服务端以及面向连接Socket的服务端,通过调用bind函数来配置本地信息。
int bind(
SOCKET s, 创建的套接字
const struct sockaddr FAR* name, 指向地址缓冲区的指针
int namelen 地址缓冲区的大小
);
成功返回0,失败返回SOCKET_ERROR
当创建一个套接字后,套接字数据结构中有一个默认的IP地址和默认的端口号。一个服务程序必须调用bind函数来给其绑定一个IP地址和一个特定的端口号。
第二个参数指定一个sockaddr结构定义如下:
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
我们通常使用另外一个等价的地址结构:
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
其中sin_family是通信协议族,
sin_port
指明端口号,
sin_addr
结构中有一个字段s_addr,表示IP