欢迎来到天天文库
浏览记录
ID:11235183
大小:284.65 KB
页数:26页
时间:2018-07-10
《江南大学tcpip群聊私聊设计.》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、TCP/IP网络协议大作业题目:基于TCP的网络通信班级:计科1203班姓名:学号:1030412313•摘要本实验基于TCP/IP协议实现客户机/服务器模式下带有用户注册,登录验证功能的互联网聊天系统。通过有连接服务为主体,无连接服务为辅,实现一对一私聊和多对多群聊。关键词:TCP/IPUDPWindowsSockets聊天系统•总体设计1.1基本协议的选取TCP(TransmissionControlProtocol)和UDP(UserDatagramProtocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、
2、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。本次实验基于TCP/IP协议实现基本的聊天功能,包括注册登录,群聊及私聊。1.2通讯终端的介绍按类别,将此聊天系统划分为三大块,分别为:•本地服务器:•本地服务器接收远程服务器转发的消息并显示消息。•远程服务器:•监听客户端的连接请求;•提供注册服务,验证登陆请求;•查看在
3、线人数,发送在线状态;•发送群聊消息及私聊消息。•本地客户端:•发送建立TCP连接的请求操作;•发送注册信息,登陆消息及退出请求;c)发送群聊消息及私聊消息。1.3程序基本流程•客户端选择注册信息;•客户端输入注册信息;•服务器接收并处理客户端注册信息;•客户端输入登录信息;•服务器接收并处理登陆信息;•服务器返回登陆成功与否信息;•若登陆成功,客户端选择群聊或私聊;•服务器根据客户端的消息处理群聊或私聊:•若是群聊,则服务器将此消息群发;•若是私聊,则服务器将此消息发送给对应用户;此程序基本通讯流程图如下:Figure1-3-1客户/服务器程序流程图1.4面
4、向连接的客户/服务器程序的工作流程此程序客户/服务器程序的工作流程可大致简化为一下步骤:a)服务器先用socket函数来建立一个套接字,用这个套接字完成通信的监听。b)用bind函数来绑定一个端口号和IP地址。因为本地计算机可能有多个网址和IP,每一个IP和端口有多个端口。需要指定一个IP和端口进行监听。c)服务器调用listen函数,使服务器的这个端口和IP处于监听状态,等待客户机的连接。d)客户机用socket函数建立一个套接字,设定远程IP和端口。e)客户机调用connect函数连接远程计算机指定的端口。f)服务器用accept函数来接受远程计算机的连接
5、,建立起与客户机之间的通信。g)建立连接以后,客户机用write函数向socket中写入数据。也可以用read函数读取服务器发送来的数据。h)服务器用read函数读取客户机发送来的数据,也可以用write函数来发送数据。i)完成通信以后,用close函数关闭socket连接。•客户端程序2.1客户端运行原理客户端应用程序的工作流程如下:•使用WSAStartup()函数检查系统协议栈的安装情况。其调用格式与服务器端调用格式类似:WSAStartup(0x0202,&wsaData);WSAStartup(MAKEWORD(2,2),&wsaData);•使用s
6、ocket()或WSASocket()函数创建客户端套接口。其调用格式同服务器端调用格式类似:SOCKETclientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);•使用connect()或WSAConnect()函数发出与服务器建立连接的请求。常用格式如下:connect(clientSocket,(structsockaddr*)&serveraddr,sizeof(serveraddr));•连接建立后,使用send()或WSASend()函数发送数据,或使用recv()或WSARecv()函数接收数据。使
7、用closesocket()函数关闭套接口。•最后调用WSACleanup()函数,结束WindowsSocketsAPI的使用。客户端程序流程图如下:Figure2-2-1程序流程图2.2客户端程序说明1.客户端当前用户结构structusers{intid;///表示第几个用户intisOnline;//表示是否在线charusername[10];//用户名charpassward[10];//密码charip[20];users*next;}*user,head,userlogin,*user_online;2.客户端连接函数voidconnect_s
8、erver(charargv[]){i
此文档下载收益归作者所有