- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
IdTCPServer简介
Indy的全名是InternetDirect(也叫Winshoes),它是一套开放源代码的Internet控件集,它支持大
部分流行的Internet协议。IdTCPServer在开始工作后,首先会自动建立一个侦听线程
TidListenerThread,该线程负责侦听客户端的连接请求,并对每一个服务器已接受的连接创建一个
TidPeerThread线程。每个连接通过运行各自所属的TidPeerThread来实现与服务器的数据交互。
IdTCPServer该控件包含一个完整的、多线程TCP服务器。该控件使用一个或者多个线程监听(listen)
客户机连接,使用时与TIdThreadMgr联合使用,将每个线程分配给与客户机连接的连接上。
Indy是一个多线程控件,在Server连接的时候,针对每客户会创建一个线程,只要有客户发送数据,
就会激活Srever的OnExecute事件。由于数据的接收是在各个为连接所建的线程中并发进行的。需
要做的,就是在OnExecute中识别是哪个客户(也即线程)发来的请求,针对这个客户的socket连接
返回服务就可以了。
Server端首先是响应客户的Connect事件,一旦连接了,就自动在服务端建立了一个连接线程。
而这个连接线程是需要Server维护的,indy的最大连接线程数不会大于600个,有600个线程你还
不够用的话,基本上就不能使用indy控件了。
TCPServer每次侦听到一个连接,就会新建一个idPeerThread,
而当这个idPeerThread触发OnExecute事件的时候,就会调用IdTCPServer1Execute,
///////////{怎样识别是哪线程发来的请求的问题?}//////////DATA线程附加信息包,可以自己定义//以便
区分到底是那一个线程发来的数据。//
Indy是阻塞式(Blocking)的
当你使用Winsock开发网络应用程序时,从Socket中读取数据或者向Socket写入数据都是异步
发生的,这样就不会阻断程序中其它代码的执行。在收到数据时,Winsock会向应用程序发送相应的消
息。这种访问方式被称作非阻塞式连接,它要求你对事件作出响应,设置状态机,并通常还需要一个等
待循环。
与通常的Winsock编程方法不同的是,Indy使用了阻塞式(便于编程)Socket调用方式。阻塞式
访问更像是文件存取。当你读取数据,或是写入数据时,读取和写入函数将一直等到相应的操作完成后
才返回。程序也一直阻塞在读或写的地方比如说,发起网络连接只需调用Connect方法并等待它返回,
如果该方法执行成功,在结束时就直接返回,如果未能成功执行,则会抛出相应的异常。同文件访问不
同的是,Socket调用可能会需要更长的时间,因为要读写的数据可能不会立即就能准备好(在很大程度
上依赖于网络带宽)。例如:
1received_msg:=trim(AThread.Connection.ReadLn(*,10,-1));
2athread.Connection.WriteLn(confirm);
1//调用ReadLn方法来//取数据,数据结束标志符//为‘*’,在未读到‘*’//时函数一直阻塞
在//该处,超时时间为10微秒,对字符串长度没有限制。2//在收到字符串后,(.ReadLn(*,10,-1))成功
运行后,下一步2运行。)。
reeze对抗“冻结”
Indy使用一个特殊的组件TIdAntiFreeze来透明地解决客户程序用户界面“冻结”的问题。
TIdAntiFreeze在Indy内部定时中断对栈的调用,并在中断期间调用Application.ProcessMessages方法处
理消息,而外部的Indy调用继续保存阻塞状态,就好像TIdAntiFreeze对象不存在一样。你只要在程序
中的任意地方添加一个TIdAntiFreeze
您可能关注的文档
- “创新链、资金链、服务链”融合发展的科技创新组织体系构建.pdf
- [培养,中国,灵魂,其他论文文档]培养中国灵魂、世界眼光的时代新人.pdf
- XX市司法助力法治化营商环境工作情况调研报告.pdf
- VFP上机习题(附带答案版).pdf
- mba工商管理基础试题及答案.pdf
- linux搭建一个web服务.pdf
- LCD使用中须关注的七个问题.pdf
- GPS时钟51单片机程序.pdf
- BIM实施专项方案.pdf
- 2025届吉林省辽河高级中学高三一诊考试生物试卷含解析.doc
- 甘肃省白银市会宁县第一中学2025届高三3月份第一次模拟考试化学试卷含解析.doc
- 2025届吉林市第一中学高考考前模拟生物试题含解析.doc
- 四川省三台县芦溪中学2025届高三下第一次测试生物试题含解析.doc
- 2025届江苏省启东市吕四中学高三适应性调研考试历史试题含解析.doc
- 浙江省宁波市十校2025届高三二诊模拟考试历史试卷含解析.doc
- 甘肃省甘南2025届高考生物必刷试卷含解析.doc
- 河北省石家庄市一中、唐山一中等“五个一”名校2025届高考历史四模试卷含解析.doc
- 江西省南昌市进贤一中2025届高考生物考前最后一卷预测卷含解析.doc
- 甘肃省白银市会宁县第四中学2025届高三第二次模拟考试历史试卷含解析.doc
- 宁夏银川市宁夏大学附属中学2025届高考化学押题试卷含解析.doc
文档评论(0)