winsock原理

       明确一点: windows创建套接字的目的是为了网络传输,实现数据的传输。 

      sockets套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,可以将套接字看做不同主机间进程进行双向通信的端点。套接字分为两种不同的类型:流式套接字和数据报套接字。流式套接字具有有序性,面向连接;数据包套接字不保证可靠性和有序性。

任何从winsock函数对IP地址和端口号的引用和传送给winsock函数的ip地址和端口均是按照网络顺序组织的。套接字可以处于阻塞和非阻塞模式。在32位系统中,可以采用多线程编程,在不同的线程中使用套接字,这样即使某个线程中的套接字被阻塞,也不会影响应用程序的其他操作。

   原理 简单客户机/服务器模型即客户机向服务器提出请求,服务器对请求做相应的处理并执行被请求的任务,然后将结果返回客户机。

  winsock的服务是以动态链接库的形式实现的,所以必须先调用wsastartup函数对动态链接哭进行初始化,协商winsock的版本支持,并分配必要的必要的资源。在应用程序关闭套接字后,还应调用wsacleanup函数终止对动态库的使用,并释放资源。

   winsock的编程模型,都采用客户机和服务器的编程模型。1服务器创建套接字,调用socket函数,(当然已经进行了版本的协商,这个过程主要是完成网络协议的声明)2将本地的地址绑定到所建的套接字上以使在网络上标示该套接字,使用bind函数完成。(这个阶段是完成套接字的绑定,制定网络的ip地址,指定端口号)3将套接字置入监听模式并准备接受连接请求。让套接字进入等待状态。调用accept函数接受用户的(这个阶段的任务是等待接受用户的信息)另外一方面,客户进程调用socket函数创建套接字,通过调用connecti函数建立一个连接,当客户端的连接建立以后,被阻塞的进程accpet函数与客户端建立连接,并向客户返回接受信号。一旦客户机的套接字收到来自服务器的接受信号,则客户机与服务器已实现连接,则可以进行数据传输了。使用recv和send函数进行数据的传输。以上这些都是在为传输数据在铺垫。无论是recv函数还是send函数都必须通过套接字进行数据的传输。最后调用closesocket函数关闭套接字。

第一章 简介 1.1 什么是Windows Sockets规范? Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。 Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。 遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets兼容的,而Windows Sockets兼容实现的提供者,我们称之为Windows Sockets提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现Windows Sockets兼容。 任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。 Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口. 应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值