1、 课 程 设 计 报 告 设计名称:设计名称:仿仿 QQQQ 通信系通信系统统 学学生姓名:生姓名: 班班 级:级: 组织单位:组织单位: 指导教师:指导教师: 时时 间:间:2013.6.32013.6.3-2013.6.23 2013.6.23 课程设计 1 一、一、 摘要摘要 即时通信,由于具有实时性、跨平台性、成本低、效率高等优点而受到广 泛的使用。设计并实现一个能够处理多用户进行实时,安全的即时通信系统具有 较强的现实意义。本文设计并实现了在 linux 环境里基于局域网内的简单即时通 信系统,系统采用 C/S 模式,底层通信通过 socket 套接字接口实现,能进行简单 实时通信并
2、能实现文件的传输。 关键字:关键字:即时通信 TCP/UDP Linux 文件传输 二、二、 需求分析需求分析 局域网仿qq通信系统能实现即时通信, 并且通讯采用TCP/UDP 协议。 Socket 是基于 TCP/IP 协议之上的一个接口规范,它为应用层之间的通信提供了保障。 Socket 适用于客户/服务器模式的网络应用程序设计,在使用面向连接模式时, 使用 TCP 协议作为通信协议,为应用程序提供面向连接的服务。 用 Socket 进行网络通信时,需要在客户端和服务器端分别创建一个 Socket, 服务器端创建成功以后在特定的端口上监听客户端的连接请求。 如果有客户端的 连接请求到来,则
3、成功建立一个连接后,客户端和服务器端就可以互相进行通信 了。 但只能是和客户端进行点对点的通信, 即服务器只允许有一个客户端的连接, 如果有连接请求到达时,服务器端需要再创建一个新的 Socket 与客户端进行通 信,而原来的那个 Socket 仍处于监听状态,等待新的客户的连接请求。 三、三、 概要设计概要设计 程序必须建立一个 Socket,按照要求配置此 Socket,也就是说程序要么将此 Socket 连接到远方的主机上,要么给此 Socket 指定一个本地协议端口。程序必 须按要求通过此 Socket 发送和接收数据,程序必须关闭此 Socket。 客户端: 创建客户端套接字(CRE
4、ATE) ; 开始数据传输(SEND、RECEIVE) ; 关闭套接字(CLOSESOCKET) ; 服务器端: 创建服务器端套接字(CREATE) ; 服务器端套接字进行信息绑定(BIND) ,并开始监听连接(LISTEN) ; 接受来自客户端的连接请求(ACCEPT) ,并创建接收进程; 开始数据传输(SEND、RECEIVE) ; 关闭套接字(CLOSESOCKET) 。 四、四、 详细设计详细设计 下面是实现 TCP 通信和 UDP 通信的流程 课程设计 2 TCTCP P 通信程序的逻辑框图通信程序的逻辑框图 Server端: Client端:S=socket() Bind(s,(s
5、truct sockaddr far *) printf(“tt|= n“); printf(“tt| 欢迎进入系统 n“); printf(“tt|= n“); printf(“tt| 1.UDP 通信 n“); printf(“tt| 2.TCP 通信 n“); printf(“tt| 3.文件传输 n“); printf(“tt| 4.exit n“); printf(“tt|=n“); void *recver(void* data) int fd1; /文件描述符 struct sockaddr_in addr1; struct sockaddr_in addr_send1; /发送者地址对象 socklen_t len1;