- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Winsock API 选项配的置
Winsock API 选项配置
摘 要 介绍了Winsock 下的网络编程API函数的网络参数以及一些基本的环境配置。同时也可以了解到一些基本的网络特性,给出了网络配置的基本形式,从而更好地对网络通讯进行有效地配置管理。在面对大量烦琐的网络函数与参数的同时,总结出了一些配置它们的方法。 关键词 套接字;Winsock;地址族;协议族;1 网络编程接口 为了方便网络编程,20世纪90年代初,由Microsoft联合了其他几家公司共同制定了一套Windows下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。 通讯的基石是套接字,一个套接字是通讯的一端。在这一端上可以找到与其对应的一个地址名。一个正在被使用的套接字都有它的类型和与其相关的进程。套接字存在于通讯域中。通讯域可以是抽象的概念,它是套接字的一套完备的系列,最后可以通过程序来实现。套接字通常和同一个域中的套接字交换数据。Windows Sockets规范支持单一的通讯域,即Internet域。 套接字可以根据通讯性质分类,程序员可以根据具体的情况进行设置。一般我们仅在同一类的套接字间通讯。可以通过配置底层文件,让不同类型的套接字间也照样可以通讯。目前socket提供可以使用两种套接字类型,即流套接字(TCP)和数据报套接字(UDP)。流套接字提供了双向的,有序的,无重复并且无记录边界的数据流服务。他在数据传输当中保证数据的完整性和可靠性等。数据报即UDP套接字支持双向的数据流,但并不保证是可靠,有序,无重复。2 用于连接套接字API Windows Sockets 规范支持的套接字属性选项都可以在对setsockopt()函数和getsockopt()函数的配置中实现。任何关于Sockets 实现必须能够识别所有这些属性选项,并且对每一个属性选项都返回合理的数值。int setsockopt( SOCKET s, int level, int optname, const char* optval, int optlen); 一般来讲,我们可以手动地对socket进行配置,但是在大多数情况下,socket的默认配置可以解决绝大多数的网络问题,只有我们需要一些特殊的用途时才会用到它。3 套接字函数 让套接字工作,其过程如下: 服务器首先启动,通过调用socket()建立一个套接字,然后调用bind()将该套接字和本地网络地址联系在一起,再调用listen()使套接字做好侦听的准备,并规定它的请求队列的长度(这个长度通常有最大的限制),之后就调用accept()来接收连接.客户在建立套接字后就可调用connect()和服务器建立连接.一旦建立连接,客户机和服务器之间就可以通过调用read()和write()来发送和接收数据。数据收发完毕之后,调用close()关闭套接字。3.1 socket() int socket(int domain, int type, int protocol); 参数domain指定套接字使用的协议族,AF_INET表示使用TCP/IP协议族,AF_UNIX表示使用Unix协议族,AF_ISO表示套接字使用ISO协议族,一般只要使用TCP/IP就可以了。type指定套接字类型,一般的面向连接通信类型(如TCP)设置为SOCK_STREAM,当套接字为数据报类型时,type应设置为SOCK_DGRAM,如果是可以直接访问IP协议的原始套接字则type应设置为SOCK_RAW。参数protocol一般设置为”0”,表示使用默认协议。当socket()函数成功执行时,返回一个对这个套接字的描述符,如果出错则返回”-1”,并设置errno为相应的错误类型。 在通常情况下,首先要将描述服务器信息的套接字地址结构清零,这个地址结构将常用的地址信息储存在一个结构里面以供调用,我们可以直接在地址结构中填入相应的内容,准备接受客户机送来的连接建立请求。Winsock定义了一种通用的套接字地址结构:struct sockaddr{unsigned short sa_family; /* address type */char sa_data[14]; /* protocol address */} 其中sa_family意指套接字使用的协议族地址类型,对于一般的TCP/IP网络,其值应该是
文档评论(0)