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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值