Linux 局域网聊天项目设计方案书 项目题目: Linux 局域网聊天系统 项目成员: 李正兴 唐炜 曹永胜 张灯 项目班级: 090301C 项目时间: 09.8.1---—09.8.12 指导老师: 廖 卫 东 1 . 项目背景介绍 1.1 套接字介绍 套接字(Socket)起初来源于 UNIX,是加利福尼亚大学 Berkeley 分校开发的 UNIX 操作系统下的网络通信接口。随着 UNIX 操作系统 的广泛使用,Socket 亦当之无愧的成为了最流行的网络通信程序接口之一。 套接字存在于其特定的通信域(即地址族)中,只有隶属于同一地址族的套接字才能建立对话,Windows Sockets V1.0 目前只支持网际域(AF_INET),所有使用网际协议簇的进程均适用于该域。 一般情况下除非通信协议支持,只有相同类型的套接字方能相互传递数据,Windows Sockets V1.1 版主要支持两种类型的套接字:流式套接字和数据报套接字,还有一种是原始套接字,但为保证网络应用程序的兼容性,一般不鼓励使用原始套接字。 式套接字(SOCK_STREAM):该类套接字提供了面向连接 的、可靠的、数据无错并且无重复的数据发送服务。而且发送的数据是按顺序接收的。所有利用该套接字进行传递的数据均被视为连续的字节流的并且无长度限制。这对数据的稳定性、正确性和发送/ 接受顺序要求严格的应用十分适用,TCP 协议使用该类接口。但其对线路的占用率相对提高。流式套接字的实现屡见不鲜,如远程登录(TELNET)、文件传输协议(FTP)等均使用了流式套接字。 数据报式套接字(SOCK_DGRAM):数据报式套接字提供了面向无连接的服务 , 它独立的数据包形式发送数据( 数据包长度不能大于 32KB),不提供正确性检查,也不保证各数据包的发送顺序,因此,可能出现数据的重发、丢失等现象,并且接收顺序由具体路由决定。然而,数据报的实现对网络线路占用率较低。NFS(网络文件系统)即是采用此类套接字、在 TCP/IP 协议族中,UDP(User Datagram Protocol)使用该类接口。 原始套接字(SOCK_RAW): 该套接字一般不会出现在高级网络接口的实现中,因为它是直接针对协议的较低层( 如 IP、TCP、UDP 等) 直接访问的。常用于检验新的协议实现或访问现有服务中配置的新设备,如前所述,一般不提倡他的直接应用。 1.2 c/s 架构介绍 C/S 结构(Client/Server 结构)是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client 端...