(完整版)基于socket的即时通讯软含外文翻译参考毕业论文 下载本文

附 录

Timer控件的灵活使用:

Timer控件可以用作事件的循环,用以检查连接状态,一旦连接断开,可以自动进行重连。也可以做计时器用,在连了很长时间仍然没连接上的时候,自动断开连接,提示用户重新连接,这个时间量由用户在控件的interval属性设置。还可以将很多事件触发打包,这一系列的事件可以一个timer控件囊括,使用时候驱动这个timer控件即可。在本程序中这些都得到体现,比如实现了限制同一IP地址连续注册ID号的功能。

致 谢

时光流逝,历经几个月的毕业设计接近了尾声,我在期间学到了许多新知识,课题分析与设计工作从开题到顺利完成,大到总体框架,小到某些细节的推敲,自始至终都受到XX老师的细心指导和关怀。张老师渊博的知识和诲人不倦的教诲使我受益匪浅,严谨的态度及孜孜不倦的研究作风是我今后工作和学习的楷模。我非常感激张老师一直以来对我的帮助和教育,在这里我表示诚挚的感激。

【原文已删除,如需完整论文,加QQ:详谈】 【通信工程本专科毕业论文修改与拟稿组】<共1万

5千字左右>

第二部分 外文资料翻译

Windows Sockets 2.0: Write Scalable Winsock Apps

Using Completion Ports(excerpts)

One of the most common things a server does is accept connections from clients. The AcceptEx function is the only Winsock API capable of using overlapped IO to accept connections on a socket. The interesting thing about AcceptEx is that it requires an additional socket as one of the parameters to the API. In a normal, synchronous accept function call, the new socket is the return value from the API. However, since AcceptEx is an overlapped operation, the accepted socket must be created (but not

bound or connected) in advance, and passed to the API. A typical psuedocode snippet that uses AcceptEx might look like the following:

do {

-Wait for a previous AcceptEx to complete

-Create a new socket and associate it with the completion port -Allocate context structure etc. -Post an AcceptEx request. }while(TRUE);

【原文已删除,如需完整论文,加QQ:详谈】 【通信工程本专科毕业论文修改与拟稿组】<共1万

5千字左右>

用完成端口开发大响应规模的Winsock应用程序

(节选)

服务器要做的最普通的事情之一就是接受来自客户端的连接请求。在套接字上使用重叠IO接受连接的惟一API就是AcceptEx()函数。有趣的是,通常的同步接受函数accept()的返回值是一个新的套接字,而AcceptEx()函数则需要另外一个套接字作为它的参数之一。这是因为AcceptEx()是一个重叠操作,所以你需要事先创建一个套接字(但不要绑定或连接它),并把这个套接字通过参数传给AcceptEx()。以下是一小段典型的使用AcceptEx()的伪代码: do {

-等待上一个 AcceptEx 完成

-创建一个新套接字并与完成端口进行关联 -设置背景结构等等 -发出一个 AcceptEx 请求 }while(TRUE);

作为一个高响应能力的服务器,它必须发出足够的AcceptEx调用,守候着,一旦出现客户端连接请求就立刻响应。至于发出多少个AcceptEx才够,就取决于你的服务器程序所期待的通信交通类型。比如,如果进入连接率高的情况(因为连接持续时间较短,或者出现交通高峰),那么所需要守候的AcceptEx当然要比那些偶尔进入的客户端连接的情况要多。聪明的做法是,由应用程序来分析交通状况,并调整AcceptEx守候的数量,而不是固定在某个数量上。

对于Windows2000,Winsock提供了一些机制,帮助你判定AcceptEx的数量是否足够。这就是,在创建监听套接字时创建一个事件,通过WSAEventSelect()这个API并注册FD_ACCEPT事件通知来把套接字和这个事件关联起来。一旦系统收到一个连接请求,如果系统中没有AcceptEx()正在等待接受连接,那么上面的事件将收到一个信号。通过这个事件,你就可以判断你有没有发出足够的AcceptEx(),或者检测出一个非正常的客户请求(下文述)。这种机制对Windows NT 4.0不适用。

使用AcceptEx()的一大好处是,你可以通过一次调用就完成接受客户端连接请求和接受数据(通过传送lpOutputBuffer参数)两件事情。也就是说, 如果客户端在发出连接的同时传输数据,你的AcceptEx()调用在连接创建并接收了客户端数据后就可以立刻返回。这样可能是很有用的,