天津猎头公司知名seo电话

web/2025/10/6 5:31:17/文章来源:
天津猎头公司,知名seo电话,广告策划案优秀案例,湘西网站建设转载#xff1a;http://blog.csdn.net/ljd_1986413/article/details/7940938 服务器程序和客户端程序应当分别运行在两台计算机上。 在运行服务器端的计算机终端执行#xff1a;./file_server 在运行客户端的计算终端上执行#xff1a;./file_client ipaddr_server 然后根…转载http://blog.csdn.net/ljd_1986413/article/details/7940938 服务器程序和客户端程序应当分别运行在两台计算机上。 在运行服务器端的计算机终端执行./file_server 在运行客户端的计算终端上执行./file_client   ipaddr_server 然后根据提示输入要传输的服务器上的文件该文件必须在服务器的当前运行目录中否则会提示找不到文件。 直接上源码吧 [cpp] view plaincopy    // file_server.c -- socket文件传输服务器端示例代码    // /   #includenetinet/in.h    #includesys/types.h    #includesys/socket.h    #includestdio.h    #includestdlib.h    #includestring.h       #define HELLO_WORLD_SERVER_PORT    6666   #define LENGTH_OF_LISTEN_QUEUE     20   #define BUFFER_SIZE                1024   #define FILE_NAME_MAX_SIZE         512      int main(int argc, char **argv)   {       // set sockets address information        // 设置一个socket地址结构server_addr,代表服务器internet的地址和端口       struct sockaddr_in   server_addr;       bzero(server_addr, sizeof(server_addr));       server_addr.sin_family  AF_INET;       server_addr.sin_addr.s_addr  htons(INADDR_ANY);       server_addr.sin_port  htons(HELLO_WORLD_SERVER_PORT);          // create a stream socket        // 创建用于internet的流协议(TCP)socket用server_socket代表服务器向客户端提供服务的接口       int server_socket  socket(PF_INET, SOCK_STREAM, 0);       if (server_socket  0)       {           printf(Create Socket Failed!\n);           exit(1);       }          // 把socket和socket地址结构绑定        if (bind(server_socket, (struct sockaddr*)server_addr, sizeof(server_addr)))       {           printf(Server Bind Port: %d Failed!\n, HELLO_WORLD_SERVER_PORT);           exit(1);       }          // server_socket用于监听        if (listen(server_socket, LENGTH_OF_LISTEN_QUEUE))       {           printf(Server Listen Failed!\n);           exit(1);       }          // 服务器端一直运行用以持续为客户端提供服务        while(1)       {           // 定义客户端的socket地址结构client_addr当收到来自客户端的请求后调用accept           // 接受此请求同时将client端的地址和端口等信息写入client_addr中           struct sockaddr_in client_addr;           socklen_t          length  sizeof(client_addr);              // 接受一个从client端到达server端的连接请求,将客户端的信息保存在client_addr中           // 如果没有连接请求则一直等待直到有连接请求为止这是accept函数的特性可以           // 用select()来实现超时检测            // accpet返回一个新的socket,这个socket用来与此次连接到server的client进行通信           // 这里的new_server_socket代表了这个通信通道           int new_server_socket  accept(server_socket, (struct sockaddr*)client_addr, length);           if (new_server_socket  0)           {               printf(Server Accept Failed!\n);               break;           }              char buffer[BUFFER_SIZE];           bzero(buffer, sizeof(buffer));           length  recv(new_server_socket, buffer, BUFFER_SIZE, 0);           if (length  0)           {               printf(Server Recieve Data Failed!\n);               break;           }              char file_name[FILE_NAME_MAX_SIZE  1];           bzero(file_name, sizeof(file_name));           strncpy(file_name, buffer,                   strlen(buffer)  FILE_NAME_MAX_SIZE ? FILE_NAME_MAX_SIZE : strlen(buffer));              FILE *fp  fopen(file_name, r);           if (fp  NULL)           {               printf(File:\t%s Not Found!\n, file_name);           }           else           {               bzero(buffer, BUFFER_SIZE);               int file_block_length  0;               while( (file_block_length  fread(buffer, sizeof(char), BUFFER_SIZE, fp))  0)               {                   printf(file_block_length  %d\n, file_block_length);                      // 发送buffer中的字符串到new_server_socket,实际上就是发送给客户端                   if (send(new_server_socket, buffer, file_block_length, 0)  0)                   {                       printf(Send File:\t%s Failed!\n, file_name);                       break;                   }                      bzero(buffer, sizeof(buffer));               }               fclose(fp);               printf(File:\t%s Transfer Finished!\n, file_name);           }              close(new_server_socket);       }          close(server_socket);          return 0;   }   [cpp] view plain copy    // file_server.c -- socket文件传输服务器端示例代码   // /   #includenetinet/in.h   #includesys/types.h   #includesys/socket.h   #includestdio.h   #includestdlib.h   #includestring.h      #define HELLO_WORLD_SERVER_PORT    6666   #define LENGTH_OF_LISTEN_QUEUE     20   #define BUFFER_SIZE                1024   #define FILE_NAME_MAX_SIZE         512      int main(int argc, char **argv)   {       // set sockets address information       // 设置一个socket地址结构server_addr,代表服务器internet的地址和端口       struct sockaddr_in   server_addr;       bzero(server_addr, sizeof(server_addr));       server_addr.sin_family  AF_INET;       server_addr.sin_addr.s_addr  htons(INADDR_ANY);       server_addr.sin_port  htons(HELLO_WORLD_SERVER_PORT);          // create a stream socket       // 创建用于internet的流协议(TCP)socket用server_socket代表服务器向客户端提供服务的接口       int server_socket  socket(PF_INET, SOCK_STREAM, 0);       if (server_socket  0)       {           printf(Create Socket Failed!\n);           exit(1);       }          // 把socket和socket地址结构绑定       if (bind(server_socket, (struct sockaddr*)server_addr, sizeof(server_addr)))       {           printf(Server Bind Port: %d Failed!\n, HELLO_WORLD_SERVER_PORT);           exit(1);       }          // server_socket用于监听       if (listen(server_socket, LENGTH_OF_LISTEN_QUEUE))       {           printf(Server Listen Failed!\n);           exit(1);       }          // 服务器端一直运行用以持续为客户端提供服务       while(1)       {           // 定义客户端的socket地址结构client_addr当收到来自客户端的请求后调用accept           // 接受此请求同时将client端的地址和端口等信息写入client_addr中           struct sockaddr_in client_addr;           socklen_t          length  sizeof(client_addr);              // 接受一个从client端到达server端的连接请求,将客户端的信息保存在client_addr中           // 如果没有连接请求则一直等待直到有连接请求为止这是accept函数的特性可以           // 用select()来实现超时检测           // accpet返回一个新的socket,这个socket用来与此次连接到server的client进行通信           // 这里的new_server_socket代表了这个通信通道           int new_server_socket  accept(server_socket, (struct sockaddr*)client_addr, length);           if (new_server_socket  0)           {               printf(Server Accept Failed!\n);               break;           }              char buffer[BUFFER_SIZE];           bzero(buffer, sizeof(buffer));           length  recv(new_server_socket, buffer, BUFFER_SIZE, 0);           if (length  0)           {               printf(Server Recieve Data Failed!\n);               break;           }              char file_name[FILE_NAME_MAX_SIZE  1];           bzero(file_name, sizeof(file_name));           strncpy(file_name, buffer,                   strlen(buffer)  FILE_NAME_MAX_SIZE ? FILE_NAME_MAX_SIZE : strlen(buffer));              FILE *fp  fopen(file_name, r);           if (fp  NULL)           {               printf(File:\t%s Not Found!\n, file_name);           }           else           {               bzero(buffer, BUFFER_SIZE);               int file_block_length  0;               while( (file_block_length  fread(buffer, sizeof(char), BUFFER_SIZE, fp))  0)               {                   printf(file_block_length  %d\n, file_block_length);                      // 发送buffer中的字符串到new_server_socket,实际上就是发送给客户端                   if (send(new_server_socket, buffer, file_block_length, 0)  0)                   {                       printf(Send File:\t%s Failed!\n, file_name);                       break;                   }                      bzero(buffer, sizeof(buffer));               }               fclose(fp);               printf(File:\t%s Transfer Finished!\n, file_name);           }              close(new_server_socket);       }          close(server_socket);          return 0;   }   [cpp] view plaincopyprint? //   // file_client.c  socket传输文件的client端示例程序    // ///   #includenetinet/in.h                         // for sockaddr_in   #includesys/types.h                          // for socket   #includesys/socket.h                         // for socket   #includestdio.h                              // for printf   #includestdlib.h                             // for exit   #includestring.h                             // for bzero      #define HELLO_WORLD_SERVER_PORT       6666   #define BUFFER_SIZE                   1024   #define FILE_NAME_MAX_SIZE            512      int main(int argc, char **argv)   {       if (argc ! 2)       {           printf(Usage: ./%s ServerIPAddress\n, argv[0]);           exit(1);       }          // 设置一个socket地址结构client_addr, 代表客户机的internet地址和端口       struct sockaddr_in client_addr;       bzero(client_addr, sizeof(client_addr));       client_addr.sin_family  AF_INET; // internet协议族       client_addr.sin_addr.s_addr  htons(INADDR_ANY); // INADDR_ANY表示自动获取本机地址       client_addr.sin_port  htons(0); // auto allocated, 让系统自动分配一个空闲端口          // 创建用于internet的流协议(TCP)类型socket用client_socket代表客户端socket       int client_socket  socket(AF_INET, SOCK_STREAM, 0);       if (client_socket  0)       {           printf(Create Socket Failed!\n);           exit(1);       }          // 把客户端的socket和客户端的socket地址结构绑定        if (bind(client_socket, (struct sockaddr*)client_addr, sizeof(client_addr)))       {           printf(Client Bind Port Failed!\n);           exit(1);       }          // 设置一个socket地址结构server_addr,代表服务器的internet地址和端口       struct sockaddr_in  server_addr;       bzero(server_addr, sizeof(server_addr));       server_addr.sin_family  AF_INET;          // 服务器的IP地址来自程序的参数        if (inet_aton(argv[1], server_addr.sin_addr)  0)       {           printf(Server IP Address Error!\n);           exit(1);       }          server_addr.sin_port  htons(HELLO_WORLD_SERVER_PORT);       socklen_t server_addr_length  sizeof(server_addr);          // 向服务器发起连接请求连接成功后client_socket代表客户端和服务器端的一个socket连接       if (connect(client_socket, (struct sockaddr*)server_addr, server_addr_length)  0)       {           printf(Can Not Connect To %s!\n, argv[1]);           exit(1);       }          char file_name[FILE_NAME_MAX_SIZE  1];       bzero(file_name, sizeof(file_name));       printf(Please Input File Name On Server.\t);       scanf(%s, file_name);          char buffer[BUFFER_SIZE];       bzero(buffer, sizeof(buffer));       strncpy(buffer, file_name, strlen(file_name)  BUFFER_SIZE ? BUFFER_SIZE : strlen(file_name));       // 向服务器发送buffer中的数据此时buffer中存放的是客户端需要接收的文件的名字       send(client_socket, buffer, BUFFER_SIZE, 0);          FILE *fp  fopen(file_name, w);       if (fp  NULL)       {           printf(File:\t%s Can Not Open To Write!\n, file_name);           exit(1);       }          // 从服务器端接收数据到buffer中        bzero(buffer, sizeof(buffer));       int length  0;       while(length  recv(client_socket, buffer, BUFFER_SIZE, 0))       {           if (length  0)           {               printf(Recieve Data From Server %s Failed!\n, argv[1]);               break;           }              int write_length  fwrite(buffer, sizeof(char), length, fp);           if (write_length  length)           {               printf(File:\t%s Write Failed!\n, file_name);               break;           }           bzero(buffer, BUFFER_SIZE);       }          printf(Recieve File:\t %s From Server[%s] Finished!\n, file_name, argv[1]);          // 传输完毕关闭socket        fclose(fp);       close(client_socket);       return 0;      }   客户端不一定要bind()服务端一定要bind()为什么不然客户端怎么知道服务器位置(IPPORT)。 一般客户端不绑定端口因为客户程序经常开关 由于一些原因(这里我说不清楚你碰到了自然理解) 断开时端口很少立刻释放(一般要1、2分钟)。 所以客户端绑定端口容易出问题。  注服务器绑定的是侦听端口客户连接后  新分配一个sock和它连接(这个sock的port是不同的相当于没有bind的一个端口)  由于侦听端口是没有实际联接的所以断开时不需握手也就没有释放问题了。   (注这段是回答时突然想到的自我感觉是正确的大家来批判啊)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现在网站建站的主流语言是什么免费seo网站优化工具

Scala 函数(Function) 概述 将一段逻辑进行封装便于进行重复使用,被封装的这段逻辑就是函数。在Scala中,必须通过def来定义函数 基本语法 def 函数名(参数列表) : 返回值类型 {函数体return 返回值 }案例 // 案例:定义函数计算两个整数的…

商业网站的后缀一般为在线爬取网页源码

P2495 [SDOI2011]消耗战 题目描述 详见:P2495 [SDOI2011]消耗战 Solution 此题是虚树的经典版子题吧qwq。 是不是直接贴代码就行了啊(反正不是luogu题解,没有人查)。 大概就是先建出虚树(一般给定一堆关键点的题…

校园网站建设方向做网站的任务书

AI人工智能在建筑智能化工程设计的应用 相关政策: 建筑智能化工程设计资质是为了合理设计各种智能化系统,让它们有机地结合成为有效的整体作用。在工程设计标准中,智能化资质设计全称为建筑智能化系统专项设计资质。企业一旦具备智能化设计资…

各种网站程序的优势揭阳网站建站网站

文章目录 一、线程的概念1. 什么是线程Linux下并不存在真正的多线程,而是用进程模拟的!Linux没有真正意义上的线程相关的系统调用!原生线程库pthread 2. 线程和进程的联系和区别3. 线程的优点4. 线程的缺点5. 线程异常6. 线程用途 二、二级页…

天河建设网站方案深圳龙岩技术科技有限公司

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于二叉树的题目 1.从前序与中序遍历序列构造二叉…

顺德网站建设公司咨询云南省住房和建设厅网站

【BASH】回顾与知识点梳理 二十 二十. 十六至十九章知识点总结及练习20.1 总结20.2 练习 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 二十. 十六至十九章知识点总结及练习 20.1 总结 shell script 是利用 shell 的功能所写的一个『程序 (prog…

网站备案最多需要多久建设网站会员登陆

以3040端口为例 要查看在Linux系统中哪个程序占用了3040端口,可以使用lsof命令或netstat命令结合适当的参数。这里提供两种常用的方法: 方法1:使用 lsof 命令 lsof(List Open Files)是一个查看当前系统打开文件的工…

网站备案查询姓名怎么样开发小程序

文章目录 Sentinel雪崩问题服务保护框架Sentinel配置 限流规则快速入门流控模式流控效果热点参数限流 隔离和降级FeignClient整合Sentinel线程隔离(舱壁模式)熔断降级 授权规则及规则持久化授权规则自定义异常结果持久化 Sentinel 雪崩问题 服务保护框架…

3.建设营销型网站流程wordpress meta 插件

1. 两个栈实现队列 实现一 思路 s1是入栈的,s2是出栈的。 入队列,直接压到s1是就行了出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中 实现二 思路 s1是入栈的&#xff0c…

做追星网站效果图会泽住房和城乡建设局网站

文章目录 前言一、下载并安装Tesseract OCR二、配置环境变量三、Python中安装使用pytesseract总结 前言 Tesseract OCR是一个开源OCR(Optical Character Recognition)引擎,用于从图像中提取文本。Pytesseract是Tesseract OCR的Python封装&am…

公司网站建设推广方案模板网站没更新

参考 Lawrence Systems 的 Youtube,频道有教程。 安装 安装 Collabora,只需要修改 账户,密码,及证书。 新增 dataset,名称 “NextCloud_Database”,其他默认新增 dataset,名称 “NextCloud_Data”&#…

山西智能建站系统价格网站开发 实习报告

计算机网络总复习链接🔗 目录 组帧差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制单帧窗口与停止-等待协议多帧滑动窗口与后退N帧协议(GBN)多帧滑动窗口与选择重传协议 介质访问控制信道划分介质访问控制…

域名网站搭建软件交易网

Jersey2为Jackson和JAXB提供内置支持。 但是默认情况下不支持Jibx。 要将Jibx与Jersey2结合使用,我们将XML输入作为流,并在接收到请求之后,使用Jibx对其进行解析。 但是实际上,有更好的方法可以使用MessageBodyReader和MessageBod…

南京快速建站公司网站设计步骤及图解

1. ETag HTTP 1.1中引入了ETag来解决缓存的问题。ETag全称是Entity Tag,由服务端生成,服务端可以决定它的生成规则。如果根据文件内容生成散列值。那么条件请求将不会受到时间戳的改动造成带宽浪费。下面是根据内容生成散列值的方法: 1 var g…

小企业官方网站制作网页版聊天工具有哪些

「拥抱开源, 又见 .NET」随着 .NET Core的发布和开源,.NET又重新回到人们的视野。 .NET Core的下个3.0即将release,加入非常多的新功能,越来越拥抱变化,DevOps和Microservice的最佳实践已经在 .NET Core落地,比如 Ocel…

做手机网站公司微信开放平台和微信公众号的区别

Windows是一个不断发展的系统,很多新的 API 在操作系统更新时更新,而MASM32开发包一般在很长一段时间内都无法及时更新,如果需要在编程中使用新添加的API函数。就得自己动手来更手库文件,下面我就给大家介绍一下如何通过手动的方法…

网站控制用dw做网站的视频

《C语言第五六次作业.ppt》由会员分享,可在线阅读,更多相关《C语言第五六次作业.ppt(40页珍藏版)》请在人人文库网上搜索。1、C语言作业解析,第四弹,。原来真正变态的是这两作业哇 原本是做完第五次作业等大家数分期中考完以后给大家,结果直接…

优斗网站建设手机百度app最新版下载

文章目录 前言实验手册一、实验目的二、实验原理1.理论原理2.硬件原理 三、系统架构设计四、模块说明1.模块端口信号列表按键消抖模块(key)计数器模块(counter)蜂鸣器乐谱模块(music)蜂鸣器发声…

网站建设方法冫金手指排名26中英文自助网站建设

再谈协议HTTP协议认识URLurlencode和urldecodeHTTP协议格式HTTP的方法HTTP的状态码HTTP常见HeaderHTTP周边会话保持 再谈协议 协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的&am…

郑州网站服务公司做 了一个 家教 网站

零基础入门NLP - 新闻文本分类,正式赛第一名方案分享:https://mp.weixin.qq.com/s/7WpZUqdlItBToLYuRLm44g