基于TCP的双客户信息传输程序--陈嘉明--.docVIP

基于TCP的双客户信息传输程序--陈嘉明--.doc

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

基于TCP的?双客户信息传?输程序 陈嘉明 201202?1750 物理与电信工?程学院 电子与通信工?程 摘要:本文介绍了基?于TCP/IP协议的客?户端和服务器?通信的基础上?,在Linux?的环境对套接?口进行编程,实现了双客户?间的通信,服务器对客户?间的信息进行?加密和监控,客户程序则对?信息进行解密?读取。 关键词:双客户通信;Linux;TCP/IP协议;Socket?套接口;I/O复用;select?函数; 1.前言 大多数的网络?应用系统可以?分为两部分:客户(client?)和服务器(server?),它们通过TC?P/IP协议进行?信息的传输。通过套接口编?写使用TCP?或UDP的网?络应用程序便?可以实现不同?的功能。 在简单的回射?服务程序中,通过捕获信号?SIGCHL?D来处理僵尸?进程;但由于客户阻?塞于等待用户?输入,当服务进程被?终止时,客户并不能立?即收到信息。通过基于se?lect函数?及poll函?数的I/O复用技术,我们可以做到?:当条件满足(如输入设备已?被读、描述字可以承?受更多的输出?),就能被通知并?采取行到,而不是被动等?待。如此,程序不但简洁?、时效性高,而且充分利用?了资源。 基于以上的技?术,编写出了双客?户通信程序,功能有三:一客户能发送?信息,接收并解密信?息;二服务器能将?客户信息加密?后再传输;三服务器对客?户通信进行监?听,包括时间、套接字、通信内容。 2.套接口函数 一个完整的T?CP客户及服?务器程序是需?要一系列基本?套接口函数来?支持的,下面可以看到?这些函数相互?配合,搭建了网络通?信程序的各个?环节。 2.1 TCP的连接? TCP通过三?路握手来达到?连接,下面是它们的?步骤: A服务器必须? 图1 三路握手建立?TCP同步连?接 2.2 基本套接口函?数 图2 基本TCP客?户-服务器程序的?套接口函数 A socket?函数 为了执行网络?输入输出,一个进程必须?做的第一件事?情就是调用s?ocket函?数,指定期望的通?信协议类型(使用IPv4?的TCP、使用IPv6?的UDP、Unix域字?节流协议等)。代码中的fa?mily指明?协议族,它是图2中所?示的某个常值?。套接口的类型?type是图?3中所示的某?个常值。一般来说,函数sock?et的参数p?rotoco?l设置为0。 B connec?t函数 TCP客户用?connec?t函数来建立?一个与TCP?服务器的连接?。当用sock?et建立了套?nnect为?connec?t就使用三次?connec?t仅指明远程? 第一个参数s?ockfd是?由socke?t函数返回的?套接口描述字?,第二、第三个参数分?别是一个指向?套接口地址结?构的指针和该?结构的大小。 大多数套接口?函数都需要一?个指向套接口?地址结构的指?针作为参数。每个协议族都?定义它自己的?套接口地址结?构。这些结构的名?字均以“sockad?dr_”开头,并以对应每个?协议族的唯一?后缀结束。套接口地址结?构必须含有服?务器的IP地?址和端口号。 IPv4套接?口地址结构通?常也称为“网际套接口地?址结构”,它以“sockad?dr_in”命名,定义在头文件?<netine?t/in.h>中。 C bind函数? bind函数?为套接口分配?一个本地协议?地址,对于网际协议?,协议地址是3?2位IPv4?TCP或UD?P端口号的组? 第一个参数s?ockfd是?socket?函数返回的套?接口描述字;第二个参数m?y_addr? 是指向数据结?构 struct? sockad?dr 的指针,保存地址(即端口和 IP 地址) 信息,第三个参数是?一个指向特定?于协议的地址?结构的长度。 当服务器启动?时,要捆绑众所周?知端口,这在固1.9中我们已看?到了。如果TCP客?户或服务器不?这么做,当调用函数c?onnect?或Usten?时,内核就要为套?接口选择一个? 临时端口。对于TCP,通过调用函数?bind可以?指定IP地址?或端口,可以都指定,也可以都不指?定。如果指定端口?为0,调用bind?时内核将选择?一个临时端口?,如果指定一个?通配IP地址?,则要等到套接?口已连接(TCP)或数据报已在?套接口上发出?(UDP)后内核才选择?一个本地IP?地址。对于IPv4?来说,通配地址由常?值INADD?R_ANY来?指定,其值一般为0?,它通知内核选?择IP地址,其赋值用法如?下: struct? sockad?dr_in servad?dr; servad?dr.sin_ad?dr.s_addr?=htonl(INADDR?_ANY); D listen?函数 listen?函数仅被TC?P服务器调用?

文档评论(0)

zhangningclb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档