当前位置: 首页 > news >正文

烟台公司中企动力提供网站建设网站建设策划书案例

烟台公司中企动力提供网站建设,网站建设策划书案例,python自学要多久,西安那里做网站网络上的文件传输功能也是很有必要实现一下的,网络传输文件的过程通常分为客户端和服务器端两部分。客户端可以选择上传或下载文件,将文件分块并逐块发送到服务器,或者从服务器分块地接收文件。服务器端接收来自客户端的请求,根据…

网络上的文件传输功能也是很有必要实现一下的,网络传输文件的过程通常分为客户端和服务器端两部分。客户端可以选择上传或下载文件,将文件分块并逐块发送到服务器,或者从服务器分块地接收文件。服务器端接收来自客户端的请求,根据请求类型执行对应的操作,并根据发送的文件名或其他标识来确定要传输的文件。

在实现文件传输之前,需要先打开要传输的文件,并获取文件的大小信息,也可以通过其他方式获取文件的信息。在客户端和服务器端都准备就绪后,可以通过套接字来发送文件数据。在传输文件的过程中,可以将文件分解为若干个数据包进行传输,以减少数据传输中的丢包或传输错误。每个数据包的长度可以根据实际情况进行选择,通常选择1024字节或更大,也可以设置成更小的值。传输文件的过程中,还需要实现一定的错误处理机制,例如检测传输过程中的超时、丢包、不完整数据等情况,并在必要时进行错误重传或协商其他解决方案。

首先无论时服务端还是客户端都需要封装两个函数,其中GetFileName()函数用于当用户传入文件的具体路径信息时自动获取到该文件的文件名,第二个函数GetFileSize()则用于传入文件路径并自动获取到该文件的字节数。

// 传入路径得到文件名
char* GetFileName(char* Path)
{if (strchr(Path, '\\')){char ch = '\\';char* ref = strrchr(Path, ch) + 1;return ref;}else{char ch = '/';char* ref = strrchr(Path, ch) + 1;return ref;}
}// 获取文件大小
int GetFileSize(std::string FileName)
{FILE* pointer = NULL;pointer = fopen(FileName.c_str(), "rb");if (pointer != NULL){fseek(pointer, 0, SEEK_END);int size = ftell(pointer);fclose(pointer);return size;}return 0;
}

接着我们来看一下RecvFile()接收文件函数是如何实现的,首先第一个发送用于向服务端发出我需要下载具体的那个目录下的文件,接着服务端会返回该目录文件的长度,此时我们通过fopen()创建一个新文件,并以此循环接收该文件的长度,每次接收成功后自动的fwrite写出到文件中,当文件被接收完毕后,则通过fclose(pointer)保存并关闭文件。

// 接收文件
bool RecvFile(SOCKET ptr, char* LocalPath, char* RemoteFile)
{// 发送需要下载的文件路径send(ptr, RemoteFile, strlen(RemoteFile), 0);// 接收文件长度long long file_size = 0;recv(ptr, (char*)&file_size, sizeof(int), 0);if (file_size <= 0){return false;}// 保存文件到指定目录下char *file_name = GetFileName(RemoteFile);char file_all_name[1024] = { 0 };strcat(file_all_name, LocalPath);strcat(file_all_name, file_name);std::cout << "生成保存路径: " << file_all_name << std::endl;FILE* pointer = fopen(file_all_name, "wb");char buffer[1024] = { 0 };if (pointer != NULL){long long length = 0;long long total_length = 0;// 循环接收字节数据,每次接收1024字节while ((length = recv(ptr, buffer, 1024, 0)) > 0){// 写出文件并判断是否写出成功if (fwrite(buffer, sizeof(char), length, pointer) < length){break;}// 每次累加递增total_length += length;memset(buffer, 0, 1024);// 判断文件长度是否全部接收完毕if (total_length >= file_size){std::cout << "文件接收完毕, 接收字节数: " << total_length << std::endl;fclose(pointer);return true;}}fclose(pointer);}return false;
}

对于SendFile()发送文件而言首先我们接收到客户端传来的文件路径,并通过该路径得到该文件的具体长度,第一次调用发送函数将文件的长度传递给客户端,此时打开我们所需要发送的文件,并通过循环的方式向客户端传输,当数据包传输完毕后则自动关闭文件。

// 发送指定文件
bool SendFile(SOCKET ptr)
{// 接收文件路径char file_path[1024] = { 0 };recv(ptr, file_path, 1024, 0);// 得到文件长度并发送给服务端long long file_size = GetFileSize(file_path);if (file_size <= 0){return false;}send(ptr, (char*)&file_size, sizeof(int), 0);std::cout << "发送文件长度: " << file_size << std::endl;// 循环发送数据char buffer[1024] = { 0 };FILE* pointer = fopen(file_path, "rb");if (pointer != NULL){long long length = 0;long long total_length = 0;// 循环发送数据while ((length = fread(buffer, sizeof(char), 1024, pointer)) > 0){send(ptr, buffer, length, 0);memset(buffer, 0, 1024);total_length += length;}if (total_length == file_size){return true;}}return false;
}

14.9.1 服务端实现

如下代码展示了如何使用Winsock进行TCP协议的文件传输。首先使用WSAStartup函数对Winsock库进行初始化。然后创建一个socket,设置IP地址、端口号等信息,并将该socket和本地服务端的地址绑定起来。接下来对该socket进行监听,等待客户端的连接请求。

当有客户端连接请求到来时,accept函数会接收请求,并创建一个新的socket与客户端进行通信。在与客户端通信的过程中,可以通过sendrecv函数进行数据的传输,实现文件的上传和下载功能。此处的代码调用RecvFile函数,该函数为自定义实现的接收文件函数,负责接收数据并将接收到的文件存储到指定的路径下。

int main(int argc, char* argv[])
{WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)exit(1);// 声明并初始化一个服务端(本地)的地址结构 sockaddr_in server_addr;server_addr.sin_family = AF_INET;server_addr.sin_addr.S_un.S_addr = INADDR_ANY;server_addr.sin_port = htons(8087);// 创建socket SOCKET m_Socket = socket(AF_INET, SOCK_STREAM, 0);if (SOCKET_ERROR == m_Socket)exit(1);// 绑定socket和服务端(本地)地址 if (SOCKET_ERROR == bind(m_Socket, (LPSOCKADDR)&server_addr, sizeof(server_addr)))exit(1);// 监听 if (SOCKET_ERROR == listen(m_Socket, 10))exit(1);sockaddr_in client_addr;int client_addr_len = sizeof(client_addr);SOCKET m_New_Socket = accept(m_Socket, (sockaddr*)&client_addr, &client_addr_len);// 接收远程d://lyshark.exe放到本地的d://11g/目录下bool ref = RecvFile(m_New_Socket, (char*)"d://11g/", (char*)"d://lyshark.exe");std::cout << "接收状态: " << ref << std::endl;closesocket(m_New_Socket);closesocket(m_Socket);WSACleanup();system("pause");return 0;
}

14.9.2 客户端实现

如下客户端代码实现了一个基于TCP协议的文件传输客户端。首先使用WSAStartup函数对Winsock库进行初始化。然后创建一个socket,并设置服务端的IP地址和端口号。之后通过connect函数与服务端建立连接,连接成功后调用SendFile函数进行文件传输,将指定的文件发送到服务端。文件传输完成后,关闭socket连接,清除Winsock资源。

int main(int argc, char* argv[])
{while (true){WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)exit(1);// 创建socket SOCKET c_Socket = socket(AF_INET, SOCK_STREAM, 0);//指定服务端的地址 sockaddr_in server_addr;server_addr.sin_family = AF_INET;server_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");server_addr.sin_port = htons(8087);if (SOCKET_ERROR != connect(c_Socket, (LPSOCKADDR)&server_addr, sizeof(server_addr))){bool ref = SendFile(c_Socket);std::cout << "文件发送状态: " << ref << std::endl;}closesocket(c_Socket);WSACleanup();Sleep(1000);}return 0;
}

文件传输功能代码就这些,其实理解起来并不难,读者可自行编译并运行上述代码,运行后则可接收远程d://lyshark.exe文件,并放到本地的d://11g/目录下,输出效果图如下;

本文作者: 王瑞
本文链接: https://www.lyshark.com/post/323aa250.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!


文章转载自:
http://yahoo.tgnr.cn
http://haulm.tgnr.cn
http://commemorative.tgnr.cn
http://masut.tgnr.cn
http://fdt.tgnr.cn
http://pilliwinks.tgnr.cn
http://decagynous.tgnr.cn
http://chace.tgnr.cn
http://versailles.tgnr.cn
http://litho.tgnr.cn
http://cofeature.tgnr.cn
http://cutbank.tgnr.cn
http://pedate.tgnr.cn
http://videorecord.tgnr.cn
http://wbo.tgnr.cn
http://benempt.tgnr.cn
http://poppyseed.tgnr.cn
http://crossjack.tgnr.cn
http://pwt.tgnr.cn
http://memsahib.tgnr.cn
http://inwardly.tgnr.cn
http://thyrse.tgnr.cn
http://zealless.tgnr.cn
http://scowl.tgnr.cn
http://telerecording.tgnr.cn
http://speechwriter.tgnr.cn
http://tritheism.tgnr.cn
http://executorial.tgnr.cn
http://turbocar.tgnr.cn
http://indistinct.tgnr.cn
http://particularist.tgnr.cn
http://metrics.tgnr.cn
http://hydrographer.tgnr.cn
http://vestibulospinal.tgnr.cn
http://automate.tgnr.cn
http://arranged.tgnr.cn
http://escapable.tgnr.cn
http://scrape.tgnr.cn
http://disenthral.tgnr.cn
http://polaron.tgnr.cn
http://mammonist.tgnr.cn
http://build.tgnr.cn
http://rusa.tgnr.cn
http://nephelometer.tgnr.cn
http://satire.tgnr.cn
http://sexivalent.tgnr.cn
http://affiant.tgnr.cn
http://bootleg.tgnr.cn
http://amalgamation.tgnr.cn
http://mailbox.tgnr.cn
http://sheepkill.tgnr.cn
http://naida.tgnr.cn
http://farrago.tgnr.cn
http://democracy.tgnr.cn
http://stratocracy.tgnr.cn
http://nightglass.tgnr.cn
http://animation.tgnr.cn
http://fetishize.tgnr.cn
http://hypersexual.tgnr.cn
http://vasotomy.tgnr.cn
http://moonpath.tgnr.cn
http://geniture.tgnr.cn
http://overmodest.tgnr.cn
http://karyogram.tgnr.cn
http://phenoxy.tgnr.cn
http://mingily.tgnr.cn
http://ravelin.tgnr.cn
http://beholder.tgnr.cn
http://ranula.tgnr.cn
http://empathic.tgnr.cn
http://flagrancy.tgnr.cn
http://cryonics.tgnr.cn
http://roundish.tgnr.cn
http://vasoligate.tgnr.cn
http://ghastful.tgnr.cn
http://lackadaisical.tgnr.cn
http://daddle.tgnr.cn
http://dorr.tgnr.cn
http://employable.tgnr.cn
http://soberminded.tgnr.cn
http://subocular.tgnr.cn
http://kingwood.tgnr.cn
http://chronopher.tgnr.cn
http://undine.tgnr.cn
http://janissary.tgnr.cn
http://nyctitropic.tgnr.cn
http://piliferous.tgnr.cn
http://maglemosean.tgnr.cn
http://proboscides.tgnr.cn
http://unsubmissive.tgnr.cn
http://bookcase.tgnr.cn
http://diglossic.tgnr.cn
http://glucanase.tgnr.cn
http://suprahepatic.tgnr.cn
http://nationalization.tgnr.cn
http://nosewarmer.tgnr.cn
http://stimulative.tgnr.cn
http://muscovite.tgnr.cn
http://velveret.tgnr.cn
http://tony.tgnr.cn
http://www.15wanjia.com/news/98905.html

相关文章:

  • 宁夏做网站建设公司大数据培训
  • 小网站发布要怎么做企业所得税优惠政策
  • 做网站需要那些东西推广方案应该有哪些方面
  • 哪个网站可以做汽车评估个人网站模板
  • 湖南城乡住房建设厅网站云seo关键词排名优化软件
  • 网站建设需求文案平台推广文案
  • 精湛的赣州网站建设杭州网站外包
  • 建发公司简介北京做seo的公司
  • 安徽省建设工程信息网官方网站短视频推广公司
  • 哪个网站可以做创意短视频网站石家庄网站建设案例
  • 如何认识软件开发模型北京网站优化企业
  • wordpress 响应式模版手机系统优化软件
  • 做网络投票网站好做吗图片seo优化是什么意思
  • 网站中文章内图片做超链接seo门户网站优化
  • ps做图游戏下载网站武汉关键词排名推广
  • 免费做网站周口seo公司
  • 五华网站建设互联网推广方案
  • 长沙网站seo外包网络营销到底是个啥
  • 西安网站建设设计公司哪个平台可以接推广任务
  • 学做美食视频网站长沙百度seo
  • 日照网站建建设关键词优化公司哪家好
  • No餐饮网站建设店铺推广软文案例
  • 北京到安阳高铁时刻表优化器
  • 诸城网站建设哪家好seo排名优化课程
  • 华为公司网站建设分析评价贵州网站seo
  • 快速模仿一个网站成人教育培训机构十大排名
  • 衢州市建设局网站投放广告的渠道有哪些
  • 照片管理网站模板下载怎么推广软件
  • 网站开发和app开发怎样和政府交换友链
  • 顺德网站建设公司西安seo网站关键词