DelphiSocket编程的基本概念.pptVIP

  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文档。上传文档
查看更多
Delphi Indy Socket 编程的基本概念 TCP/IP 传输控制协议和互联网协议,Transmission Control Protocol and Internet Protocol. 通常所说的TCP/IP表示传输承载 TCP/IP会控制传输质量,这是最大的优势: 保证数据包到达的顺序 保证数据包不丢包,可靠到达对方 自动重传机制 MTU概念:以太网默认1500Byte 端口(PORT)概念 Client/Server C/S概念,客户端/服务器 请求应答模式,Request/Response Client = 主叫,Server = 被叫,Server更像一个语音呼叫中心,可以接受很多呼叫 IP address:32bit的整数,但一般表示成可阅读的格式,如,即四个Byte分别隔开,每个Byte范围是0~255,IP地址就像电话号码 一个服务器可以有多个IP地址,称之为Multi-Homed 端口 Port是个整数,范围是1~65535 端口就像分机号 1024以下端口号是保留的,用作已知的公用协议,如HTTP=80,FTP=21,POP3=110,SMTP=25等等 服务器要接受入站的请求,就必须监听一个端口,客户端要和服务器通信,就要提供IP地址和端口 协议 协议包含两个事情 端口号,端口类型(TCP,UDP,ICMP) 高级命令格式(例如HTTP,FTP,……) 协议可以自定义,一般公用协议是作为RFC给出的,如HTTP就是RFC 2616. 公用协议一般用文本方式 域名和DNS 域名是人类可阅读格式的“IP”地址 对人而言,容易阅读和记忆 对机器而言,可以随时更换IP而不用更改配置 域名和IP没有一一对应的关系,但一个域名在某一地点的某一时刻一定只能解释为一个IP DNS为域名解释,翻译域名为IP地址,DNS服务器相当于一个地址本 socket Socket是组合了IP,端口和协议,Socket也是一个连接两个处理进程的管道,可以是本地的,也可以是远程的。 Socket就像电路交换连接的会话 本地环回 字节序 主机序:不同的CPU、操作系统有不同的字节序类型,字节序是指整数在内存中保存的顺序 网络序:网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用大头 大头小头 地址(大头) 0001 0002 0003 0004 数据(0x1234) 1 2 3 4 Big-endian,大头 Unix ,Motorola 最直观:不考虑对应关系,只要把内存地址从左到右按照由低到高的顺序写出,把值按照通常的高位到低位的顺序写出,两者对照,一个字节一个字节的填充 地址低位存储值的高位,地址高位存储值的低位 Little-endian,小头 Windows,Intel架构 最符合人的思维:低位值小就应放在地址小的地方 地址低位存储值的低位,地址高位存储值的高位 地址(小头) 0001 0002 0003 0004 数据(0x1234) 4 3 2 1 大小头转换 转换函数: htons 把unsigned short类型从主机序转换到网络序 htonl 把unsigned long类型从主机序转换到网络序 ntohs 把unsigned short类型从网络序转换到主机序 ntohl 把unsigned long类型从网络序转换到主机序 请问:字符串,数组等需要转换吗? Indy特点 阻塞模式 线程模式 序列化串行 类似操作文件方式 阻塞和假死? 阻塞:如果没有用重叠I/O或者用线程来运行,直接调用Socket的相关API,会一直等待对方的操作完成才能继续做其他的事情 非阻塞模式 重叠I/O:调用的时候一样调用Socket API,但是给定重叠I/O标记,调用后可以继续运行,但是后续代码不能认为数据是完整可用的,重叠I/O需要对I/O操作的结果做检测 线程:用独立线程去掉用Socket API 阻塞可能导致程序假死 阻塞模式优点:代码结构简单,适合简单的数据交互和后台服务,缺点:UI交互困难,有假死现象 非阻塞模式优点:适合各种网络情况,用户体验较好,缺点:代码结构复杂,编程要求高,逻辑复杂 死连接检测 心跳(推荐) 流量检测:从最后一次收到数据开始计时若干秒,没有收到任何数据就算失败 TCP Keep Alive 需要TCP/IP驱动和协议栈支持 本质是底层的心跳包 procedure TdmProvider.IdServerConnect(AThread: TIdPeerThread); type TCP_KeepAlive = record OnOff: Cardinal;

文档评论(0)

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

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

1亿VIP精品文档

相关文档