广西大学计算机与电子信息学院 本科课程设计报告 1 此文档为网络编程课程设计文档。 课程设计题目:网络编程——聊天程序 程序运行环境:Ubu ntu Linu x 编程语言:C 语言 使用图形界面技术:GTK+2.0 本人是大学本科生,所学知识有限,在此班门弄虎了,希望与大家在技术上多多交流。此文所有权归本人所有,所以请勿抄袭。 广西大学计算机与电子信息学院 本科课程设计报告 2 网络编程 聊天程序设计报告 学 院: 计算机与电子信息学院 专业名称: 网络工程 姓 名: 网名:书箱子 时 间: 2011 年 1 月 广西大学计算机与电子信息学院 本科课程设计报告 3 聊天程序设计任务书 1 .设计题目 自己设计应用层协议,实现聊天程序,要求能够实现服务器能够同时处理多个客户的连接请求,实现客户端通过服务器的转发通信。 2 . 实验设计 2 .1 实验环境 1)虚拟机:Oracle VM VirtualBox 2)操作系统:Ubuntu-10.10-desktop 2 .2 通信功能分析 实现聊天程序,并要考虑服务器能够同时处理多个客户的连接请求,实现客户端通过服务器的转发通信。则通信过程分析如下: 服务器端: 1)建立 socket绑定监听端口; 2)等待客户端的连接; 3)当客户与服务器建立连接后,服务器记录客户所有信息,如 ID号; 4)当客户消息到达服务器后,服务器分析客户信息: a.若为转发消息,根据消息格式提供的转发ID号,服务器立即查找转发列表,转发消息,若查找后发现需要转发的客户ID不存在则返回错误信息给原客户,提示不存在要发送的客户端ID号; b.若为询问消息,服务器返回当前登录到服务器的所有客户的ID号; c.若为退出消息,服务器清楚当前客户的所有信息,更新客户列表; 5)以上 2-4步都是随时进行的: a.任何新进客户端都能随时连接服务器; b.任何以连接客户端都能发送消息,并且服务器能同时处理多个同时到来的消息,实现并发的处理客户端消息。 6)当服务器停止工作时,关闭监听套接字。 客户端 : 1)建立连接到服务器的socket; 2)发送登录信息,信息中需要包含自身的ID号,使服务器能识别本机; 3)使用信号机制,随时能接收服务器传来的消息,不阻塞,及时的显示到来信息,并记录到来信息,以方便用户查看聊天记录; 4)能随时向服务器发送消息,有三种消息: a.询问消息,询问服务器当前已连接到服务器的客户列表; b.转发消息,告知服务器需要转发的ID号和信息,通过服务器进行...