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

企业网站软件注册公司的流程有哪些

企业网站软件,注册公司的流程有哪些,在直播网站做前端注意,网站架构设计师有哪些学校可以报考在原生套接字编程中我们介绍了利用文件长度来控制文件传输的方法#xff0c;本节我们将采用另一种传输方式#xff0c;我们通过判断字符串是否包含goodbye lyshark关键词来验证文件是否传输结束了#xff0c;当然了这种传输方式明显没有根据长度传输严谨#xff0c;但使用这…在原生套接字编程中我们介绍了利用文件长度来控制文件传输的方法本节我们将采用另一种传输方式我们通过判断字符串是否包含goodbye lyshark关键词来验证文件是否传输结束了当然了这种传输方式明显没有根据长度传输严谨但使用这种方式也存在一个有点那就是无需确定文件长度因为无需读入文件所以在传输速度上要快一些尤其是面对大文件时。 服务端代码如下所示在代码中我们分别封装实现recv_remote_file该函数用于将远程特定目录下的文件拉取到本地目录下而send_local_file函数则用于将一个本地文件传输到对端主机上这两个函数都接收三个参数分别是套接字句柄本地文件与远程文件的文件路径在传输时采用了while循环读取发送的实现方式每次传输1024个字节直到传输结束为止。 #include iostream #include string #include boost/asio.hpp #include boost/array.hppusing namespace boost::asio;// 将远程特定目录下的文件拉取到本地目录 bool recv_remote_file(ip::tcp::socket *socket, std::string remote_file_path, std::string local_file_path) {boost::system::error_code error_code;// 发送需要下载的文件,告诉客户端我需要下载的文件路径std::string message remote_file_path;bool ref (*socket).write_some(boost::asio::buffer(message), error_code);if (ref false)return false;char buffer[1024] { 0 };// 打开文件准备写入保存远程文件到本地 FILE * fp fopen(local_file_path.c_str(), wb);if (NULL fp)return false;int length 0;// 每次传输1024字节直到传输全部结束while ((length (*socket).read_some(boost::asio::buffer(buffer, 1024), error_code)) 0){// 判断最后一次是否为结束符号if (strncmp(buffer, goodbye lyshark,15) 0){std::cout 传输结束,再见了 lyshark std::endl;fclose(fp);return true;}if (fwrite(buffer, sizeof(char), length, fp) length){std::cout 写入文件失败 std::endl;break;}std::cout 接收字节数: length Bytes std::endl;memset(buffer, 0, 1024);}if (error_code){fclose(fp);return false;}fclose(fp);return true; }// 将本地特定文件发送到远程的特定目录下 bool send_local_file(ip::tcp::socket *socket, std::string local_file_path, std::string remote_file_path) {boost::system::error_code ec;char buffer[1024] { 0 };// 发送放入目标位置bool ref (*socket).write_some(boost::asio::buffer(remote_file_path));if (ref false)return false;// 打开待发送文件FILE * fp fopen(local_file_path.c_str(), rb);if (NULL fp)return false;int length 0;// 每次读入1024字节 直到全部读取结束while ((length fread(buffer, sizeof(char), 1024, fp)) 0){bool ref (*socket).write_some(boost::asio::buffer(buffer, 1024));if (ref ! false){std::cout 发送字节数: length Bytes std::endl;memset(buffer, 0, 1024);}}// 发送结束符(*socket).write_some(boost::asio::buffer(goodbye lyshark));if (ec){fclose(fp);return false;}fclose(fp);return true; }int main(int argc, char* argv[]) {io_service io_service;ip::tcp::acceptor acceptor(io_service, ip::tcp::endpoint(ip::tcp::v4(), 6666));ip::tcp::socket socket(io_service);acceptor.accept(socket);std::cout 远端IP地址: socket.remote_endpoint().address() std::endl;std::cout 本端IP地址: socket.local_endpoint().address() std::endl;// 将远程目录下 c://lyshark.exe 下载到本地的 d://lyshark.exebool recv_ref recv_remote_file(socket, c://lyshark.exe, d://lyshark.exe);std::cout 下载状态: recv_ref std::endl;std::system(pause);// 将本地目录中的 d://lyshark.exe 发送到远程 c://test.exebool send_ref send_local_file(socket, d://lyshark.exe, c://test.exe);std::cout 上传状态: send_ref std::endl;std::system(pause);return 0; }客户端代码代码如下所示分别实现了两个函数函数upload_file用于将本地文件上传到服务器端函数download_file则用于接收服务器端发送过来的文件过程中同样采用while循环每次传输1024个字节。 #include iostream #include boost/asio.hpp #include boost/array.hppusing namespace boost::asio;// 将本地特定文件发送到远程的特定目录下 bool upload_file(ip::tcp::socket *socket) {boost::system::error_code error_code;boost::arraychar, 4096 buf { 0 };char buffer[1024] { 0 };// 接收要下载文件路径size_t len (*socket).read_some(boost::asio::buffer(buf));if (len 0)return false;// 打开需要发送的文件FILE * fp fopen(buf.data(), rb);if (NULL fp)return false;int length 0;// 每次读入1024字节直到全部读取结束while ((length fread(buffer, sizeof(char), 1024, fp)) 0){bool ref (*socket).write_some(boost::asio::buffer(buffer, 1024));if (ref ! false){std::cout 发送字节数: length Bytes std::endl;memset(buffer, 0, 1024);}}// 发送结束符(*socket).write_some(boost::asio::buffer(goodbye lyshark));// 如果出现错误直接退出if (error_code){fclose(fp);return false;}fclose(fp);return true; }// 获取远程发送过来的文件 bool download_file(ip::tcp::socket *socket) {boost::system::error_code error_code;// 读入需要保存文件路径char file_path[4096] { 0 };(*socket).read_some(boost::asio::buffer(file_path));char buffer[1024] { 0 };//打开文件准备写入 FILE * fp fopen(file_path, wb);if (NULL fp)return false;int length 0;// 每次传输1024字节while ((length (*socket).read_some(boost::asio::buffer(buffer, 1024), error_code)) 0){// 判断最后一次是否为结束符号if (strncmp(buffer, goodbye lyshark,15) 0){std::cout 传输结束,再见了 lyshark std::endl;fclose(fp);return true;}if (fwrite(buffer, sizeof(char), length, fp) length){printf(写入文件失败 ! \n);break;}printf(接收字节: %d byte \n, length);memset(buffer, 0, 1024);}if (error_code){fclose(fp);return true;}fclose(fp);return true; }int main(int argc, char* argv[]) {io_service io_service;ip::tcp::socket socket(io_service);ip::tcp::endpoint ep(ip::address_v4::from_string(127.0.0.1), 6666);socket.connect(ep);// 该函数对应服务端的 recv_remote_filebool upload_ref upload_file(socket);std::cout 上传状态: upload_ref std::endl;std::system(pause);// 该函数对应服务端的 send_local_filebool recv_ref download_file(socket);std::cout 下载状态: recv_ref std::endl;std::system(pause);return 0; }读者可自行编译并运行上述程序代码中依次实现了上传与下载功能如下图所示
http://www.hkea.cn/news/14513055/

相关文章:

  • 这么开网站广告推广投放平台
  • wordpress电影资源网站兰州seo优化入门
  • 黄山企业网站建设微信小程序后端开发教程
  • 网站搭建博客百度企查查官网
  • 电子商务网站预算模板自己名字怎么设计logo
  • 中国建设工程造价管理协会登录网站青岛网站制作定制
  • asp网站密码网站建设目的要求
  • 安徽工业大学两学一做网站wordpress怎么安装asp主题
  • 网站功能提升权限昆明做网站建设怎么样
  • wordpress 网站导航代做计算机毕业设计网站
  • l林州住房建设部官方网站电商网站数据中心建设方案
  • 河北做it的网站深圳网站开发ucreator
  • 网站一键生成app微信小程序里的音乐音频怎么删除
  • 做短视频网站好当今做啥网站致富
  • 免费网站打包app广东网页空间代理
  • 国内出名网站建设设计公司郑州app开发公司定制外包
  • 自己建设网站流程wordpress手机页面模板
  • 好用的网站模板价格低文案
  • 站群网站源码体育直播网站源码
  • 电影网站app怎么做的百度网站大全首页
  • 电商企业网站源码音乐网站禁止做浅度链接
  • 网站建设感恩2023智慧树网络营销答案
  • 那些网站使用vue做的网络广告推广平台有哪些
  • 建设银行网站怎么登陆密码错误深圳高端营销网站模板
  • python和php哪个做网站个人网站设计源代码
  • 网站开发专业大学做燕鲍翅的网站
  • 做网站莱芜网页搜索框的记录怎么删除
  • 网站目录管理模板需要推广的app在哪里找
  • 南宁定制网站制作电话网站维护中是怎么回事
  • 自己建网站做网店wordpress编辑器技巧