求时,它将转而充当客户程序,向其它服务器程序请求信息。这方面的一个典型例子就是提供Internet从域名到IP地址映射服务的DNS服务器。
为了充分理解TCP/IP协议族,必须理解几个重要术语。这些术语指出了两个TCP/IP传输协议:用户数据包协议(UDP)和传输控制协议(TCP)之间的区别。这些术语进一步描述了与网络连接、协议可靠性以及数据服务有关的协议特性。
当建立服务器程序时,应该将服务器程序设计成等候客户的请求。你知道,TCP传输层通过协议端口和应用程序(像服务器和客户)通信,也就是说,为了接收客户请求,服务器程序必须对传输层的一个特定协议端口进行侦听。当服务器配置socket接口时,它使用bind()函数让Socket执行体登记一个协议端口。也就是说,程序告诉Socket执行体使用哪一个协议端口进行数据传送。Socket执行体接着告诉传输层某个特定协议端口已被使用,并将其收到的所有数据传送给Socket API。
使用无连接协议的程序和使用面向连接协议的服务器程序之间的主要相似之处是它们都必须对一个协议端口进行侦听。例如,无连接和连接服务器程序必须在协议端口侦听客户请求。同样,由于无连接客户程序没有和远地主机建立直接连接,所以它也必须对协议端口进行侦听,以便接收以对它服务请求产生的数据报应答。Socket API中的bind()函数让程序将一个本地地址(包括主机地址和协议端口)和一个Socket联系起来。
下面程序行显示了一个典型的函数调用:
result=bind ( socket_handle, local_structure, socket_address, address_ length)
无连接客户程序也对一个协议端口进行侦听。使用无连接协议的程序不和远地主机建立直接连接。无连接客户程序使用数据报发送网络服务请求,它不建立点到点连接。因此无连接客户程序必须在一个协议端口,对应答数据报进行侦听。与服务器程序一样,无连接客户程序也使用bind()函数让Socket执行体登记协议端口。也就是说,类似服务器程序,无连接客户程序告诉Socket执行体使用哪个协议端口进行数据传输。Socket执行体处理传输层内UDP软件模块和客户程序之间的接口[9]。
第4章 需求分析及开发方法
4.1 需求分析
一个即时通讯软件应提供基于TCP/IP网络的即时消息传送、消息广播、实时聊天等功能。列举如下:
(1) 支持多账号。
(2) 可以同时发送同一个消息给一个人,通过输入对方信息。
(3) 可以同时发送一个消息给所有人。
(4) 即使用户不在线,也能通过服务器发送离线消息。
(5) 提供消息、聊天的历史记录,方便对信息的查看和管理。
(6) 提供查看在线的人的功能。
(7) 用户上线通知。
(8) 用户下线更新
(9) 有权限的人可以发系统广播通知
(10) 查看用户信息
(11) 更改个人信息
(12) 开机启动设置
(13) 主窗口总是浮在最上端
(14) 速度快,占用资源少
4.2 系统功能模块
根据上述的需求分析,并针对个人所掌握的知识和自己毕业设计时间的限制,要做到面面俱到是不可能的,并考虑到作为局域网(校园网)聊天工具,终端用户数量较少,我设计的通讯软件借鉴了QQ、聊天室等即时聊天工具,聊天信息采用服务器转发方式,只要当前在线的用户都可以接收到,当然,也实现了两人之间私聊的功能。包括服务器程序和客户端程序,服务器包括聊天信息即时转发、系统日志记录、发送通知、以及数据库的备份、还原、初始化。客户端具有登陆,注册,修改个人信息,聊天等功能。
4.3 系统功能需求图
这个即时通讯软件系统包括服务器端和客户端,服务器端有聊天记录、系统设置、发布通告、数据库备份还原初始化、置顶的功能,