常用于可靠的网络传输,而UDP是基于数据报的无连接的.DOCVIP

常用于可靠的网络传输,而UDP是基于数据报的无连接的.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常用于可靠的网络传输,而UDP是基于数据报的无连接的.DOC

网络编程可分为基于TCP的网络程序设计和基于UDP的网络程序设计。TCP是基于字节流的面向连接的,常用于可靠的网络传输,而UDP是基于数据报的无连接的网络传输,常用语即时通信。 ??? 无论是基于TCP或者是基于UDP的程序设计,它都是有固定的步骤可循的。只要理解这些步骤,实现起来也是比较简单的。下面将介绍基于TCP和UDP的网络编程的详细步骤以及实现实例。 ??? 在介绍网络编程之前,首先要说明一点:Winsock函数是Windows提供的网络编程的借口,无论是基于TCP的还是UDP的网络编程,在程序设计之前,都要首先加载Winsock库。 一、基于TCP的网络应用程序 ??? 网络应用程序都是基于C/S(客户端/服务器)模式的,因此在进行网络应用 HYPERLINK /kf \t _blank 程序开发时,不仅要开发服务器应用程序也要开发客户端应用程序。开发服务器应用程序和客户端应用程序在步骤上略有不同。下面介绍一下基于TCP的网络应用程序开发的详细步骤: 服务器端应用程序:????????????????????????????????????????????????????????????????? 客户端应用程序: 1、创建socket套接字??????????????????????????????????????????????????????????????? 1、创建socket套接字 2、将套接字绑定(bind)到指定的本机IP地址和端口上??????????? 3、将套接字设为监听模式(listen),准备接受客户端的请求?????????????????? 2、向服务器发送连接请求(connect) 4、等待客户端请求的到来(accept),并返回新的套接字进行通信 5、服务器和客户端相互通信(send/recv)???????????????????????????????????????? 3、服务器和客户端相互通信(send/recv)? 6、返回继续等待新的客户端请求到来 7、关闭socket套接字??????????????????????????????????????????????????????????????????4、关闭socket套接字 注释:服务器要绑定端口,监听客户端请求,当接受到请求后才开始通信。而客户端只需要先发送请求,只要请求被接收后就可以通信了。 在理解示例代码之前,先介绍一些知识点和函数: 第一点:在网络 HYPERLINK /kf \t _blank 编程中,要用到IP地址和端口号,比如在bind()和accept()函数中都需要有到IP地址和端口号,在Windows API中有一个SOCKADDR_IN结构体中可以保存IP地址和端口号的信息。 第二点:服务器要绑定的IP地址应该用(INADDR_ANY)属性,表示服务器可以接受任何端口发送来的连接请求,这是因为有的机器可能有多个网卡,因此可能有多个IP地址,这样设定可以方便后面的程序开发。 第三点:网络通信中用到的是网络字节序,intel的机器本机字节序和网络字节序的存放格式是不一样的,所以要用想用的函数进行转化。 inet_addr()将点分十进制的IP地址转化为u_long型 inet_ntoa()将in_addr结构类型的参数转化为点分十进制的IP地址 htonl()将u_long型的IP地址从主机字节序转换为网络字节序 htons()将u_short型的IP地址从主机字节序转换为网络字节序 第四点:网络编程要用到Winsock库,,所以不仅要加载winsock的头文件,并且要绑定ws2_32.lib动态链接库。绑定动态链接库有两种方法。第一种就是在工程的“属性”里设置“Link”的链接库加上ws2_32.lib就可以了。第二种方法就是在工程的源文件中加上代码:#pragma comment(lib,ws2_32.lib)就可以了。 ?/************************************************************** ???????????????????????基于TCP的服务器应用程序示例代码 ?****************************************************************/ #include stdafx.h #include stdlib.h #include Winsock2.h #include stdio.h void main() { ?/************************************************************** ?????????????????

文档评论(0)

135****2685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档