Socket网络编程大作业Word文档格式.docx
- 文档编号:7774746
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:14
- 大小:60.70KB
Socket网络编程大作业Word文档格式.docx
《Socket网络编程大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《Socket网络编程大作业Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
版本号
修改内容
1
编写需求分析
2
修改模块接口设计
3
编写自我评价
TCP/IP协议的概述
TCP/IP(TransmissionControlProtocol/InternetProtocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。
TCP/IP协议使用范围极广,是目前异种网络通信使用的唯一协议体系,适用于连接多种机型,既可用于局域网,又可用于广域网,许多厂商的计算机操作系统和网络操作系统产品都采用或含有TCP/IP协议。
TCP/IP协议已成为目前事实上的国际标准和工业标准。
基于TCP/IP协议组的网络模型分为应用层、传输层、网络层、链路层和物理层这样五个层次。
TCP/IP协议组位于应用程序和硬件之间,指挥数据在网络各层中传递。
其中传输层的协议包括传输控制协议(TCP)和用户数据报协议(UDP),它们都建立在IP协议的基础上,其中TCP提供可靠的面向连接服务,UDP提供简单的无连接服务。
传输层提供端到端,即应用程序之间的通信,主要功能是数据格式化、数据确认和丢失重传等。
TCP协议是面向连接的协议,它提供可靠的字节流服务,在进行数据传输之前必须先建立连接,经三次握手确定后才开始数据传送。
UDP进行数据报传输使用的是不可靠、无连接的协议。
网络层包括互连网协议IP,互连网控制报文协议ICMP和互连网组管理协议IGMP。
其中IP协议完成大部分的工作,负责数据传输和路由的选择等。
IP报头中的地址和网卡相联系(具体还涉及地址解析和反向地址解析协议),TCP、UDP报头中的端口号侧对应着网络主机上不同的程序。
TCP/IP体系结构如图一所示:
TCP/IP体系结构
Socket通常也称作"
套接字"
,用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过"
向网络发出请求或者应答网络请求。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
尽管TCP/IP协议的名称中只有TCP这个协议名,但是在TCP/IP的传输层同时存在TCP和UDP两个协议。
TCP是一种面向连接的保证可靠传输的协议。
通过TCP协议传输,得到的是一个顺序的无差错的数据流。
发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是serversocket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
1文档概述
1.1文档目的和范围
明确任务和需求,使得软件开发人员知道软件开发流程,软件测试时更有条理。
1.2术语/缩略语
序号
术语/缩略语
说明
API
应用程序编程接口
Socket
网络套接口
IP
IP是英文InternetProtocol(网络之间互联的协议)的缩写
4
Client/Server
客户机/服务器模式
5
Winsock
Windows下网络编程的规范
1.3参考文档
文档名
作者
时间
版本
Windows网络编程
罗莉琴詹祖桥
2011年4月
第1版
2系统概述
2.1项目说明
本软件是把客户端和服务器集为一体,通过tcp协议,实现可靠的文件传输功能。
运行环境:
win7
2.2需求分析
该程序实现局域网内的文件传输功能,包括服务器端程序和客户端程序两部分。
客户端程序:
可连接到服务器,并将文件发送到服务器端和接受服务器端发送来的文件。
服务器端程序:
负责相应客户端的消息和接收客户端发送来的文件。
2.3可行性或难点分析
本软件的难点在于进行文件传输时只能传送较小的文件,对于大文件的传输还有部分问题尚待解决。
此外,传输文件时的效率较低,程序容易出现假死现象,所以考虑到如果使用多线程应该能提高效率,但是基于自身能力和时间问题,这部分优化没有做,只是完成了基本的文件传输功能。
3通信协议设计
3.1通信流程
3.2会话举例
1.选择服务器端的话会自动获取本机IP,可以自定义端口号。
然后点击“启动”按钮,可以开启服务器监听有无客户端连接。
2.选择客户端可以自己输入要连接的服务器的IP地址和端口号。
点击“连接”按钮,可以连接到服务器,然后“选择文件”按钮才可以被点击。
3.服务器和客户端连接后的状态如下所示:
4.选择一个文件后点击发送,文件接收成功后会出现提示框。
4系统设计说明
4.1模块整体结构图
4.2使用说明书
程序使用MFC做的界面,所以操作简单,直接用鼠标点击相应按钮即可。
5模块详细说明
5.1核心通信模块
该函数主要用于处理文件传输的控制消息。
发送文件函数SendFile,该函数在发送文件线程被调用,其代码如下:
voidCFileTransfersDlg:
:
SendFile(CSocket&
senSo)
{
m_bIsTransmitting=TRUE;
//打开要发送的文件
CFilefile;
if(!
(m_strPath,CFile:
modeRead|CFile:
typeBinary))
{
AfxMessageBox(_T("
文件打开失败"
));
GetDlgItem(IDC_DISCONNECT)->
EnableWindow(TRUE);
GetDlgItem(IDC_SELECT_FILE)->
GetDlgItem(IDC_STOP_TRANSFERS)->
EnableWindow(FALSE);
();
return;
}
(0,m_dwFileSize);
intnSize=0,nLen=0;
DWORDdwCount=0;
charbuf[BLOCKSIZE]={0};
(0,CFile:
begin);
//开始传送文件
for(;
;
)
//每次读取BLOCKSIZE大小的文件内容
nLen=(buf,BLOCKSIZE);
if(nLen==0)
break;
//发送文件内容
nSize=(buf,nLen);
dwCount+=nSize;
(dwCount);
CStringstrTransfersSize;
("
%ld字节"
dwCount);
GetDlgItem(IDC_RECEIVE_SIZE)->
SetWindowText(strTransfersSize);
//用户是否要停止发送
if(m_bIsStop)
{
m_bIsStop=FALSE;
}
if(nSize==SOCKET_ERROR)
//关闭文件
();
//关闭套接字
if(m_dwFileSize==dwCount)
文件发送成功"
else
文件发送失败"
(0);
GetDlgItem(IDC_DISCONNECT)->
GetDlgItem(IDC_SELECT_FILE)->
GetDlgItem(IDC_STOP_TRANSFERS)->
m_bIsTransmitting=FALSE;
}
文件接收函数ReceiveFile,该函数在文件接收线程中被调用,其代码如下:
ReceiveFile(CSocket&
recSo)
//停止等待超时计时器
KillTimer
(2);
m_bIsWait=FALSE;
intnSize=0;
//创建一个文件
CFilefile(m_strPath,CFile:
modeCreate|CFile:
modeWrite);
//开始接收文件
//每次接收BLOCKSIZE大小的文件内容
nSize=(buf,BLOCKSIZE);
if(nSize==0)
//将接收到的文件写到新建的文件中去
(buf,nSize);
//用户是否要停止接收
if(m_bIsStop)
文件接收成功"
文件接收失败"
6结论
6.1自我评价或总结
这次作业让我把Socket编程用到了实处,以前感觉很神秘的网络编程现在看来不再那么不可捉摸,这次编程作业让我学会了网络编程的应,同时也让我感受到了自己的知识不系统,想要编写一个能供运行的软件不难,要编写一个很优秀的软件还是很不容易的。
6.2需要进一步学习的内容
关于多线程编程感觉自己的知识不足,操作系统有些东西理解的不透彻,这次虽然编写了简单的文件传输但是不能很好的优化传输效率,让我认识到了自己知识的不足。
6.3系统扩展计划
此文件传输系统经过优化后可以作为聊天软件的一个附加功能,就是把原有的文件传输拓展为带有文件传输的聊天软件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Socket 网络 编程 作业