TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc

TCP/IP协议编程大作业

课题名称 基于TCP的网络通信

专 业 计算机科学与技术

班 级 计算机1206

学 号 1030412612

学生姓名 王 成 义

物联网工程学院

摘 要

此TCP/IP课程设计实现了基于TCP的客户/服务器通信程序,具体实验过程通过有连接服务为主体,无连接服务为辅并利用事件对象I/O管理来实现。客户机具有注册,登陆,单聊,私聊,在线人数列表,退出等功能。

目 录

一、 总体设计4

1、基本通信协议选取4

2、通信过程设计4

3、通信过程数据包设计4

4、 程序流程图5

二、 客户端程序6

1、功能:6

2、原理:6

3、程序清单6

三、 服务器端程序19

1、功能:19

2、原理:19

3、程序清单:19

四、 运行结果35

1、 服务器端截图35

2、客户端截图37

总体设计

1、基本通信协议选取

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。而UDP则不为IP提供可靠性、流控或差错恢复功能。TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

本次实验基于TCP/IP协议利用事件对象I/O管理实现基本的聊天功能,包括注册,登录,群聊,私聊及在线人数统计。

2、通信过程设计

2.1客户端设计

本地服务器

主要功能:

1)接收远程服务器转发的消息并显示消息。

本地客户端

主要功能:

1)发送建立TCP连接的请求操作;

2)发送注册信息,登陆消息及退出请求;

3)发送群聊消息,私聊消息,在线人数统计及退出请求。

2.2服务器端设计

远程服务端

主要功能:

1)监听客户端的连接请求;

2)提供注册服务,验证登陆请求和验证功能;

3)查看在线人数,发送在线状态;

4)发送群聊消息及私聊消息。

3、通信过程数据包设计

3.1客户端数据包设计:

a.注册:

‘0’user(用户名)‘@’password(密码)b.登陆:

‘1’user(用户名)‘@’password(密码)c.聊天:

0)群聊:

‘2’user(用户名)‘@’str(内容)1)单聊:

‘5’str1(单聊对象名)‘@’user(用户名)‘*’str(内容)2)在线用户

‘4’user(用户名)‘@’str(内容)3)退出(登录):

‘3’user(用户名)‘@’

3.2服务端数据包设计:

a.注册应答:

‘00’—注册成功‘01’—注册失败—用户名已存在b.登陆应答:

‘10’—登陆成功‘12’—用户名不存在‘11’—密码不正确‘1@’—该用户已登陆c.聊天:

1)单聊:

‘61’—单聊对象不在线‘50’—单聊对象在线‘60’—单聊对象不存在2)群聊:

‘30’—广播消息‘31’—非正确用户的消息,不广播3)在线人数:

‘40’—显示当前在线人数并发给查询客户

程序流程图

客户端程序

1、功能:

1.1注册:向服务器发送注册信息。然后接收服务器返回的应答信息。

1.2登陆向服务器发送登陆信息接收服务器返回的应答信息聊天:

a.单聊:从在线用户中选择一个,与其单聊

b.群聊:向所有在线的用户发送消息

c.退出聊天:退出此次聊天,但不断开连接

d.退出登陆,断开连接,退出时不需要发送下线信息,直接退出

1.4面向连接的客户/服务器程序工作模型:

2、原理:

客户机在注册或登陆时首先和服务器连接,注册完或登陆失败断开连接,登陆成功不断开连接,使用send和recv发送接收数据,根据上述的数据报的定义,发送相应的数据报。

3、程序清单

3.1客户端接收器(本地服务器)代码

#include

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

#define DEFAULT_PORT 5051//FOR RECV

#define BUFFER_LENGTH 1000

void

江南大学C语言大作业,TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc...相关推荐

  1. 高性能网络编程总结及《TCP/IP Sockets编程(C语言实现) (第2版)》 代码下载(链接以及文件打包)

    http://blog.csdn.net/column/details/high-perf-network.html http://blog.csdn.net/russell_tao/article/ ...

  2. 编译原理个人作业--第五章——基于 编译原理 国防工业出版社 第三版

    1 文法 G 1 G_1 G1​为 E → E + T ∣ T T → T ∗ F ∣ F F → ( E ) ∣ i E\rightarrow E+T|T\\ T\rightarrow T*F|F\ ...

  3. c语言中通过键盘给一维数组赋值怎么_编程C语言进阶篇——构造类型:数组

    在c语言的实际应用中,我们常常需要同时对多个数据进行处理,如果没有专门批量处理数据的方法,就会给我们的程序编写造成巨大的影响.而这种批量处理数据的方法就是我们这次的主题--数组. 一.数组是什么 在c ...

  4. c语言单片机自动浇花系统,基于51系列单片机的盆花自动浇水系统设计.doc

    摘要:随着科学技术的发展,尤其是单片机技术和半导体技术的高速发展,利用单片机控制仪器的研究及应用越来越受到重视.目前,盆栽植物越来越受到城市居民的喜爱,但是往往存在着人工给盆栽植物浇水带来的局限性,为 ...

  5. 《TCP/IP Sockets编程(C语言实现) (第2版)》 代码下载(链接以及文件打包)

    作者所属大学Baylor的网站,在相关的页面上提供了下载. http://cs.ecs.baylor.edu/~donahoo/practical/CSockets2/textcode.html 后来 ...

  6. Python能成为通用编程开发语言的10大原因

    世界上只有几种编程语言提供多种功能. 在当今世界,开发人员必须能去构建各种类型的应用程序,所以多学习一种多功能开发语言是有必要的. 虽说php是世界上最好的语言,但这也不妨碍Python成为通用编程开 ...

  7. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

  8. c语言 指针不能赋值吗,程序员编程C语言指针答疑:指针赋值没那么简单

    C语言指针,纸老虎 一.程序员编程C语言答疑合集 更多C语言学习答疑文章,请参阅:程序员编程C语言答疑文章合集 也可以加入下方我的"C语言答疑课堂"圈子,第一时间看到我给大家带来的 ...

  9. C语言编程拼错的纸条,程序员编程C语言指针答疑:小心scanf函数给指针输错值...

    一.程序员编程C语言答疑合集 https://m.toutiaocdn.com/group/6718545102257521166/?app=news_article&timestamp=15 ...

最新文章

  1. 人类将可能操控AI?神经网络语言处理工作原理被破解
  2. 被spring和hibernate4逼疯
  3. windows加固方案
  4. 大数据、机器学习与深度学习类命令行工具汇总
  5. 【产品分析】做儿童应用产品会遇到的的七个难题
  6. 基于条件随机场的命名实体识别
  7. 高性能服务器设计——常用网络服务器设计模型(转载)
  8. 15个基本的C#面试问题
  9. fastjson与spring mvc整合的配置
  10. MVVM 自动生成编号
  11. Linux下的Asp.Net配置指南
  12. java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...
  13. Axure RP9教程 入门讲解
  14. 2021年危险化学品生产单位安全生产管理人员考试内容及危险化学品生产单位安全生产管理人员新版试题
  15. 七牛云视频转码 php,学习猿地-我的扩展包分享 - 七牛云视频转码
  16. 弹窗动画PopupWindow
  17. [免费专栏] Android安全之Root检测与Root绕过(浅析)
  18. 美国出台商用无人机新规,宝宝表示我也要去考无人机飞行员驾照
  19. 面向对象的三大特征:封装、继承和多态的简单概述
  20. 【javaScript案例】之搜索的数据显示

热门文章

  1. An attempt was made to call the method javax.persistence.PersistenceContext.synchronization()
  2. Prince and Princess HDU - 4685
  3. python编程midi键盘按键_python 偷懒技巧——使用 keyboard 录制键盘事件
  4. Makefile中的一些小知识点,及常用的makefile举例
  5. OpenSearch最新功能介绍
  6. 医院排队叫号系统源码 医院系统源码 医院源码
  7. mysql客户端连接10060,Navicat远程连接MySQL出现10060解决办法小结
  8. BugMeNot:查找和共享登录名(一个神奇的网站)
  9. jpa vue管理系统_如何通过利用Java流获取类型安全和直观的Hibernate / JPA查询
  10. 当前不会命中断点还未为文档加载任何符号——问题探究