- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络编程文件传输实验报告
基于TCP的网络文件传输实验报告
实验目的
熟悉TCP/IP协议的功能和网络操作
编写小型的socket应用程序,初步了解windows环境下使用sockets编程,实现点对点文本传输。
实验原理
本程序是基于TCP/IP协议栈的网络编程,使用C语言,利用操作系统提供的套接字网络编程接口进行编写
TCP协议是其中重要的传输协议,为应用层提供可靠的 端到端的流传输服务.其中套接字取值sock_stream即为TCP的流传输服务
Windows socket包含了人们所熟悉的Berkeley Socket风格的函数库,也包含了一组针对windows的扩展库函数,以使程序员能充分的利用windows驱动消息机制进行编程。
Windows Sockets的规范本意在于提供给应用开发者一套简单的API,并让个网络应用软件开发商遵守该协议。此外在一个特定的版本windows基础上,Windows socket也定义了一个二进制借口(ABI),从此来保证Windows socket API应用程序能够在任何符合Windows socket协议的实现上工作。
设计概述
创建套接字
服务进程和客户进程在实现通信前必须创建各自的套接字,然后才能用相应的套接字进行发送接收操作,服务进程总是先于客户端进程启动,服务器端进程和客户端进程创建套接字。Socket()函数实现代码如下:
SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);//创建了可识别套接字
地址绑定
当调用socket()创建套接字后,服务器必须把套接字与自己的地址显式地建立联系,以便客户端向该IP地址和端口号的服务进程请求服务,这个过程是通过调用函数bind()实现的。bind()函数原型如下:
int bind(SOCKET s ,const struct sockaddr FAR*name ,int namelen);
服务器套接字置为监听模式
将服务器设置为监听工作方式后,使用API调用listen():
int listen(SOCKET s, int backlog);
第一个参数指定套接字。第二个参数指定了正在等待连接的最大队列长度。若无错误发生,则listen()函数返回0。
建立连接,进行文件传输
调用gets(path)获得传输文件的路径和存放文件路径,这个过程中还需调用send()函数和recv()函数,共同协调实现文件传送。
源代码
服务器端
#include WINSOCK2.H#include stdio.h#pragma comment(lib,ws2_32.lib)#define SIZE 1024*8void main(){//创建套接字WORD myVersionRequest;WSADATA wsaData;myVersionRequest=MAKEWORD(1,1);int err;err=WSAStartup(myVersionRequest,wsaData);if (!err){??? printf(已打开套接字\n);
} else{??? //进一步绑定套接字??? printf(嵌套字未打开!);??? return;}SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);//创建了可识别套接字//需要绑定的参数SOCKADDR_IN addr;addr.sin_family=AF_INET;addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址addr.sin_port=htons(6000);//绑定端口
bind(serSocket,(SOCKADDR*)addr,sizeof(SOCKADDR));//绑定完成listen(serSocket,5);//其中第二个参数代表能够接收的最多的连接数
////////////////////////////////////////////////////////////////////////////开始进行监听//////////////////////////////////////////////////////////////////////////SOCKADDR_IN clientsocket;int len=sizeof(SOCKADDR);SOCKET serConn;char sendBuf[50];serConn=accept(serSocket,(SOCKADDR*)clientsocket,len);//如果这里不是accept而是conectio
您可能关注的文档
- 用PB编写WinSock应用程序.doc
- Socket Api模块.doc
- 利用socket中的sock_stream套接字实现一个TCP公开扫描程序.doc
- D2.3.1中值定理.ppt
- 实验四 网络编程通信http.doc
- D9.6方向导数与梯度.ppt
- 实验15:UNIX Socket编程.doc
- D4_1,2向量组及其线性组合及其线性相关性.ppt
- 第十二章 秘书的文书立卷、归档和档案工作.ppt
- 代数式_等式与方程2.ppt
- 2023年镇江市公务员考试行测真题及完整答案详解1套.docx
- 2023年温州市公务员考试行测真题及答案详解(考点梳理).docx
- 2023年绵阳市公务员考试行测真题及答案详解(考点梳理).docx
- 2023年秦皇岛市公务员考试行测真题及参考答案详解.docx
- 2023年梁平县公务员考试行测真题及一套完整答案详解.docx
- 2023年资阳市公务员考试行测真题完整参考答案详解.docx
- 2023年柳州市公务员考试行测真题含答案详解.docx
- 2023年白山市公务员考试行测真题及答案详解(全国通用).docx
- 2023年省直辖行政单位公务员考试行测真题及答案详解(易错题).docx
- 2023年甘南州公务员考试行测真题及一套完整答案详解.docx
文档评论(0)