word文档 可自由复制编辑

网络编程课程设计报告

题 目:

基于linux网络聊天室设计

姓 名:

学 院:

信息科学技术学院

专 业:

网络工程

班 级:

网络112班

学 号:

指导教师:

职称: 副教授

2014 年 6 月 22 日

基于linux网络聊天室设计

摘要:本课程设计是在Linux环境下基于Socket进行开发的。系统服务器端和客户端组成。服务端程序通过共享存储区存储聊天数据,并发送给每个连接的客户端。通过多路复用的子进程实现服务端与多个客户端之间的数据发送与接收。可以在单机上开辟两个窗口分别运行客户、服务器的程序。本方案经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客户端大致步骤:

(1)创建socket.

(2)根据服务器地址,connect连接到特定服务器。

(3)write,read等读写操作。

(4)关闭套接字。

1.3 客户/服务器模型

应用程序之间为了能顺利地进行通信,一方通常需要处于守候状态,等待另一方请求的到来。在分布式计算中,一个应用程序被动地等待,而另一个应用程序通过请求启动通信的模式就是客户/服务器模式。 客户/服务器模型的典型运行过程包括五个主要步骤:

(1)服务器监听相应窗口的输入。

(2)客户机发出请求。

(3)服务器接收到此请求。

(4)服务器处理此请求,并将结果返回给客户机。

(5)重复上述过程,直至完成一次会话过程任务。

2.系统结构设计

2.1 系统结构设计

本系统采用客户/服务器模型,在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是客户端/服务器模式的TCP/IP。在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递[4]。所以多个客户端之间的通信就变为了客户端与服务端的通信。

服务器端和客户端的主要组成如下:

服务器端:套接字创建函数Socket(),端口绑定函数Bind(),套接口监听函数Listen(),接受连接函数Accept(),数据收发函数Read()和Write(),以及套接口关闭函数Close()。

客户端:套接口创建函数Socket(),套接口连接函数Connect(),数据收发函数Read()和Write(),以及套接口关闭函数Close()。

2.2通信设计

首先运行服务器端程序,通过Socket()函数会建立一个套接字,然后通过Bind()函数绑定一个端口,然后调用Listen()在套接字指定的端口上开始倾听,利用Accept()从完全建立连接的队列中接受一个连接,连接获得后使用Read()和Write()函数进行通信。通信结束后调用Close()关闭套接字描述符。

运行客户端的程序,调用Socket()函数建立一个套接字,使用Connect()函数与服务器端进行连接,连接完成后,使用Write()和Read()与服务器端进行通信,通信结束后调用close()关闭套接字描述符。

3.1系统调用相关函数

(1)Socket()

作用:

linux聊天室项目课程设计,网络编程课程设计报告--基于linux网络聊天室设计.docx...相关推荐

  1. python课程设计的主要任务是什么_Python网络编程课程设计 任务1.docx

    [简答题]什么是第2范式? [简答题]请根据案例<明天>,说说你的理解. [单选题]某幼儿完成了一件对他而言具有桃战性的任务一,教师及时地肯定了该幼儿的表现.这位教师遵循的环境创设原则是? ...

  2. Linux网络编程:用C语言实现的聊天程序(同步通信)

    通过TCP协议,用C语言实现的同步聊天程序,注释写的比较详细,个人觉得对字符串处理比较充分,能够正常编译运行,拿出来和大家分享一下! 1.客户端源代码: [cpp] view plaincopypri ...

  3. C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。

    C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口. 最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件 抖动窗口功能 ...

  4. python 网络编程是什么_什么是网络编程-Python 网络编程-嗨客网

    Python网络编程网络编程教程 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一 ...

  5. 网络编程基础,纯C语言实现聊天室(附源代码)——从铁矿到钢铁的打造

    文章目录 1 概述 1.1聊天室设计内容 2 系统设计 2.1系统功能设计 2.1.1用户管理 2.1.2聊天室管理 2.1.3聊天管理 2.1.4系统管理 2.2系统数据结构设计 2.3系统主要函数 ...

  6. 网络编程(三):Linux 网络IO模型、select、pool、epoll 内核设计

    Linux网络IO模型 同步和异步,阻塞和非阻塞 同步和异步 关注的是调用方是否主动获取结果 同步: 同步的意思就是调用方需要主动等待结果的返回 异步: 异步的意思就是不需要主动等待结果的返回,而是通 ...

  7. Netty网络编程实战2,使用Netty开发聊天室功能

    目录 一.服务端 1.主程序类 2.自定义初始化器 3.自定义处理器 二.客户端 1.主程序类 2.自定义初始化器 3.自定义处理器 三.启动服务端.客户端 1.服务端:你好,我是服务端,哪吒编程 2 ...

  8. aio 系统原理 Java_Java新一代网络编程模型AIO原理及Linux系统AIO介绍

    从JDK 7版本开始,Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进,其中最重要的部分,就是对异步io的支持 ...

  9. 【Linux网络编程学习】预备知识(网络字节序、IP地址转换函数、sockaddr数据结构)

    此为牛客Linux C++课程和黑马Linux系统编程笔记. 1. 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分. 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小 ...

  10. 网络编程(三)---- MFC 仿QQ聊天软件

    今天来八一八,MFC的SOCKET 编程,利用CSocket实现一个基于TCP实现一个QQ聊天程序.你会发现,MFC要比WIN32 简单的多.但是如果你不理解具体API socket基础知识,你可能会 ...

最新文章

  1. 基于SSM实现汽车租赁系统
  2. goland设置goroot_go环境搭建-goland使用、gopath、go命令
  3. Hermes与开源的Solr、ElasticSearch的不同
  4. 洛谷 - P3690 【模板】Link Cut Tree (动态树)(LCT模板)
  5. GenericUDTF使用流程记载(转载+自己整理)
  6. git 使用笔记(一)
  7. mysql的dql_Mysql-DQL
  8. Redis的DMS管理工具treeNms
  9. 智慧环卫系统建设方案(智能垃圾分类收运管理)
  10. 合成孔径雷达成像——算法与实现图【2.3】仿真——rect函数、sinc函数的傅里叶变换matlab仿真
  11. 计算机存储换算 2GB等于多少MB,一gb等于多少mb 1gb等于多少mb?存储单位的含义和换算【详解】...
  12. 彻底删除IE的缓存问题
  13. 软件测试判定表测试用例,黑盒测试用例设计方法之判定表法
  14. 路由器就能赚钱? 揭秘京东云无线宝背后的黑科技
  15. 2022(春)软工作业2:个人编程练习
  16. cmd脚本win10使用schtasks命令实现定时任务
  17. iOS从相册选择图片并裁剪,可用于上传头像
  18. 学习淘淘商城第三十四课(在业务逻辑中添加缓存)
  19. 非递归前序遍历二叉树,非递归中序遍历二叉树,非递归后续遍历二叉树
  20. S3 Drive支持以及FIPS 140-2兼容性

热门文章

  1. 苏教版四年级下册计算机说课稿,苏教版四年级下册认识多位数说课稿
  2. 一张图看懂企业经营,企业战略的本质,企业数字化转型 Road Map, 企业大脑的本质...
  3. 摄像头各参数的意义_监控摄像头各种基本参数名称说明
  4. 国产光刻机再次斩获新订单,业绩大幅衰退的ASML如遭雷击
  5. VB SendMessage 函数
  6. 安装mysql8报错及解决方案
  7. Raspberry Pi
  8. unity学习之路——什么是unity(附学习路线)
  9. concat函数_《MySQL 入门教程》第15篇MySQL常用函数之字符函数
  10. Java之支付宝支付(电脑网站支付)案例实战