TCP/IP网络协议大作业
题 目: 基于TCP的网络通信
班 级: 计科1203班
姓 名:
学 号: 1030412313
? 摘要
本实验基于TCP/IP协议实现客户机/服务器模式下带有用户注册,登录验证功能的互联网聊天系统。通过有连接服务为主体,无连接服务为辅,实现一对一私聊和多对多群聊。
关键词:TCP/IP UDP Windows Sockets 聊天系统
? 总体设计
1.1基本协议的选取
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。
本次实验基于TCP/IP协议实现基本的聊天功能,包括注册登录,群聊及私聊。
1.2通讯终端的介绍
按类别,将此聊天系统划分为三大块,分别为:
? 本地服务器:
? 本地服务器接收远程服务器转发的消息并显示消息。
? 远程服务器:
? 监听客户端的连接请求;
? 提供注册服务,验证登陆请求;
? 查看在线人数,发送在线状态;
? 发送群聊消息及私聊消息。
? 本地客户端:
? 发送建立TCP连接的请求操作;
? 发送注册信息,登陆消息及退出请求;
c) 发送群聊消息及私聊消息。
1.3 程序基本流程
? 客户端选择注册信息;
? 客户端输入注册信息;
? 服务器接收并处理客户端注册信息;
? 客户端输入登录信息;
? 服务器接收并处理登陆信息;
? 服务器返回登陆成功与否信息;
? 若登陆成功,客户端选择群聊或私聊;
? 服务器根据客户端的消息处理群聊或私聊:
? 若是群聊,则服务器将此消息群发;
? 若是私聊,则服务器将此消息发送给对应用户;
此程序基本通讯流程图如下:
Figure 1-3-1客户/服务器程序流程图
1.4面向连接的客户/服务器程序的工作流程
此程序客户/服务器程序的工作流程可大致简化为一下步骤:
a) 服务器先用socket函数来建立一个套接字,用这个套接字完成通信的监听。
b) 用bind函数来绑定一个端口号和IP地址。因为本地计算机可能有多个网址和IP,每一个IP和端口有多个端口。需要指定一个IP和端口进行监听。
c) 服务器调用listen函数,使服务器的这个端口和IP处于监听状态,等待客户机的连接。
d) 客户机用socket函数建立一个套接字,设定远程IP和端口。
e) 客户机调用connect函数连接远程计算机指定的端口。
f) 服务器用accept函数来接受远程计算机的连接,建立起与客户机之间的通信。
g) 建立连接以后,客户机用write函数向socket中写入数据。也可以用read函数读取服务器发送来的数据。
h) 服务器用read函数读取客户机发送来的数据,也可以用write函数来发送数据。
i) 完成通信以后,用close函数关闭socket连接。
? 客户端程序
2.1客户端运行原理
客户端应用程序的工作流程如下:
? 使用WSAStartup()函数检查系统协议栈的安装情况。其调用格式与服务器端调用格式类似:
WSAStartup(0x0202,wsaData);
WSAStartup(MAKEWORD(2,2),wsaData);
? 使用socket()或WSASocket()函数创建客户端套接口。其调用格式同服务器端调用格式类似:
SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
? 使用connect()或WSAConnect()函数发出与服务器建立连接的请求。常用格式如下:connect(clientSocket,(struct sockaddr*)serveraddr,sizeof(serveraddr));
? 连接建立后,使用send()或WSASend()函数发送数据,或使用recv()或WSARecv()函数接收数据。使用closesocket()函数关闭套接口。
? 最后调用WSACleanup()函数,结束Windows Sockets API的使用。
客户端程序流程图如下:
Figure 2-2-1程序流程图
原创力文档

文档评论(0)