1、 网络编程网络编程课程设计报告课程设计报告 题 目: 基于 linux 网络聊天室设计 姓 名: 学 院: 信息科学技术学院 专 业: 网络工程 班 级: 网络 112 班 学 号: 19311226 指导教师: 职称: 副教授 2014 年 6 月 22 日 基于基于 linux 网络聊天室网络聊天室设计设计 摘要摘要: 本课程设计是在 Linux 环境下基于 Socket 进行开发的。 系 统服务器端和客户端组成。 服务端程序通过共享存储区存储聊天 数据,并发送给每个连接的客户端。通过多路复用的子进程实现 服务端与多个客户端之间的数据发送与接收。 可以在单机上开辟 两个窗口分别运行客户、服
2、务器的程序。本方案经 gcc 调试器调 试成功,可以在机网络聊天中使用。 关键词关键词:网络聊天;linux ;socket 1.linux 中中 socket 的基本应用:的基本应用: 1.1 服务端建立套接字的大致步骤:服务端建立套接字的大致步骤: (1)建立 socket。 (2)bindPort 绑定特定的端口。 (3)listen 监听特定的端口。 (4)accept,当有客户端连接服务器端口时,accept 接收信息,并 返回新的套接字描述符,提供给操作 (5)根据实际需求,write,read,send,recv 等操作 (6)关闭套接字。 1.2 客户端大致步骤:客户端大致步骤
3、: (1)创建 socket. (2)根据服务器地址,connect 连接到特定服务器。 (3)write,read 等读写操作。 (4)关闭套接字。 1.3 客户客户/服务器模型服务器模型 应用程序之间为了能顺利地进行通信, 一方通常需要处于守候状 态,等待另一方请求的到来。在分布式计算中,一个应用程序被 动地等待, 而另一个应用程序通过请求启动通信的模式就是客户 服务器模式。 客户/服务器模型的典型运行过程包括五个主 要步骤: (1)服务器监听相应窗口的输入。 (2)客户机发出请求。 (3)服务器接收到此请求。 (4)服务器处理此请求,并将结果返回给客户机。 (5)重复上述过程,直至完成一
4、次会话过程任务。 2.系统结构设计系统结构设计 2.1 系统结构设计系统结构设计 本系统采用客户/服务器模型,在 TCP/IP 网络应用中,通信的两 个进程间相互作用的主要模式是客户/服务器模式(Client/Server model) ,即客户向服务器发出服务请求,服务器接收到请求后, 提供相应的服务。 客户/服务器模式的建立基于以下两点: 首先, 建立网络的起因是网络中软硬件资源、运算能力和信息不均等, 需要共享,从而造就拥有众多资源的主机提供服务,资源较少的 客户请求服务这一非对等作用。其次,网间进程通信完全是异步 的, 相互通信的进程间既不存在父子关系, 又不共享内存缓冲区, 因此需要
5、一种机制为希望通信的进程间建立联系, 为二者的数据 交换提供同步,这就是客户端/服务器模式的 TCP/IP。在客户/服 务器模型中,多个相互通信的计算机都作为客户端,与网络服务 器进行连接, 并通过服务器进行信息的传递4。 所以多个客户端 之间的通信就变为了客户端与服务端的通信。 服务器端和客户端的主要组成如下: 服务器端:套接字创建函数 Socket(),端口绑定函数 Bind(),套 接口监听函数 Listen(),接受连接函数 Accept(),数据收发函数 Read()和 Write(),以及套接口关闭函数 Close()。 客户端:套接口创建函数 Socket(),套接口连接函数 C
6、onnect(), 数据收发函数 Read()和 Write(),以及套接口关闭函数 Close()。 2.2 通信设计通信设计 首先运行服务器端程序,通过 Socket()函数会建立一个套接字, 然后通过 Bind()函数绑定一个端口,然后调用 Listen()在套接字 指定的端口上开始倾听,利用 Accept()从完全建立连接的队列中 接受一个连接,连接获得后使用 Read()和 Write()函数进行通信。 通信结束后调用 Close()关闭套接字描述符。 运行客户端的程序,调用 Socket()函数建立一个套接字,使用 Connect()函数与服务器端进行连接,连接完成后,使用 Write() 和 Read()与服务器端进行通信, 通信结束后调用 close()关闭套接 字描述符。 3