首页 > 其他分享 >TCP客户端服务器的数据传送

TCP客户端服务器的数据传送

时间:2024-08-07 20:56:34浏览次数:13  
标签:szContent pfile TCP char nReadNum fh 服务器 sizeof 客户端

客户端----发送方

先导入WSAStartup函数的一个声明

//获取文件大小

struct stat s
这个结构体包含了文件的基本信息,例如大小、所有者、权限、最后访问和修改时间等。

//发送信息给服务器

char*ptemp=szbuf;
while(*++ptemp!='\0');

while(*--ptemp!='\\');
 ++ptemp;

ptemp就提取了文件路径中的文件名

strcpy(fh.m_szFileName,ptemp);//把文件名复制给m_szFileName

send(sockclient,(char*)&fh,sizeof(fh),0);//并发送给接收方

//接收服务器的回复

int num=recv(sockclient,szResult,sizeof(szbuf),0);//使用 recv 函数来接收通过套接字 sockclient 发来的数据。recv 函数接收数据到 szResult 数组中,sizeof(szbuf) 指定了接收数据的最大字节数,用 szbuf 的大小作为接收的大小,

//读文件并发送

 int nReadNum=fread(szContent,sizeof(char),ONEPAGE,pfile);

//使用 fread 函数从文件流 pfile 中读取数据。fread 函数将读取的数据存储在 szContent 数组中。sizeof(char) 是每个字符占用的字节数,ONEPAGE 是要读取的字符数,定义了读取数据的块大小。nReadNum 变量存储了实际读取到的字符数。

        if(nReadNum>0)
    {
        send(sockclient,szContent,nReadNum,0);

// 如果读取成功,会使用 send 函数将读取的数据通过套接字 sockclient 发送给客户端,szContent 是要发送的数据,nReadNum 是发送数据的字节数

    }

//文件关闭

fclose(pfile);

 

服务器----接收方

//接收文件信息

recv(sockWaiter,(char*)&fh,sizeof(fh),0);

//yes or no

 char szResult[RESULT]={0};
 char szContent[ONEPAGE]={0};

    cin>>szResult;//输入回复yes

//发送给客户端

 send(sockWaiter,szResult,sizeof(szResult),0);

//yes

//指定存储路径

char szpath[MAX_PATH]={0};
        cin>>szpath;

strcat(szpath,fh.m_szFileName);//从用户接收一个路径szpath,然后将文件名 fh.m_szFileName 连接到该路径的末尾,从而构建一个完整的文件路径

//在指定位置创建文件

FILE *pfile=fopen(szpath,"wb");//fopen 函数以二进制写模式打开一个文件

//接收文件内容

 int nReadNum=recv(sockWaiter,szContent,sizeof(szContent),0);//接收szContent里面的内容
            if(nReadNum>0)
            {
                fwrite(szContent,sizeof(char),nReadNum,pfile);
                noffset+=nReadNum;
                cout<<"recv file:"<<noffset*100/fh.FileSize<<endl;
                if(noffset==fh.FileSize){
                    break;
                }
            }

//读取成功,这行代码使用 fwrite 函数将读取到的数据从 szContent 缓冲区写入到由 pfile 指向的文件中。sizeof(char) 是每个字符的字节大小,nReadNum 是要写入的字符数

//fwrite 函数将确保数据被完整地写入文件,即使数据量超过了缓冲区的大小,也会正确处理

//关闭文件

fclose(pfile);

标签:szContent,pfile,TCP,char,nReadNum,fh,服务器,sizeof,客户端
From: https://blog.csdn.net/weixin_74265856/article/details/141000270

相关文章

  • TCP三次握手和四次挥手
    TCP报文中一些字段的含义确认ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1同步SYN:在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1终止FIN:用来释放连接。当FIN=1,表明此报文的发送方......
  • Nginx反向代理,代理H5前端 ,java后端,使用服务器+finalshell+vpn
    使用前确认已经安装好nginx,这里我使用的是普通的nginx,注意不是Docker版本的nginx输入nginx-t查询一下,自己的nginxconfig.nginx在那个包下,方便查询 使用catnginx.conf命令,进入需要配置的conf中(这个是我使用的server[server{listen82;s......
  • OSI和TCP的握手/挥手
    引子关于3次握手,4次回收,OSI七层模型以及各层的作用,较为深入的整理一下。OSI七层模型全称open-system-interconnect。由国际组织提出的一套关于全球范围的计算机可以开放式通信的规范。OSI参考模型包含7层,从上到下分别是从上到下作用请求发出的流程相关协议应......
  • 在多服务器环境中部署LLaMA 3.1 405B模型
    #LLaMA3.1405B模型部署指南本指南提供了在三台服务器(100.10.128.1、100.10.128.2、100.10.128.3)上部署LLaMA3.1405B模型的详细步骤。##1.安装NVIDIA驱动和CUDA在所有三台服务器上执行以下步骤:```bash#更新系统sudoaptupdate&&sudoaptupgrade-y#安......
  • 获取客户端真实IP
    出于安全考虑,近期在处理一个记录用户真实IP的需求。本来以为很简单,后来发现没有本来以为的简单。这里主要备忘下,如果服务器处于端口回流(hairpinNAT),keepalived,nginx之后,如何取得客户端的外网IP。 来自客户端PC的流量路径如上,在这样的拓扑中,在应用服务中取得,客户端PC的外......
  • SVN服务器安装流程说明
    一、准备软件:Apache2.2.6、Subversion1.6.16、TortoiseSVN1.6.7,此次安装版本如下: 二、安装步骤:1.安装Apache2.2(默认安装即可)64位系统安装目录默认为:C:\ProgramFiles(x86)\ApacheSoftwareFoundation\Apache2.22. 确认Apache是否正确安装打开浏览器,输入htt......
  • 认识Modbus RTU与Modbus TCP
    (选自成都纵横智控-ModbusRTU与ModbusTCP协议区别详解 )ModbusRTU和ModbusTCP是两种常用的工业通信协议,用于连接电子设备,但它们在多方面有所不同。以下是它们的详细比较:ModbusRTU协议类型:ModbusRTU是一种串行通信协议,通常使用RS-232、RS-422或RS-485标准进......
  • 幻兽帕鲁联机服务器推荐
    《幻兽帕鲁》作为一款开放世界的生存制作游戏,其多人游戏模式吸引了大量玩家。上线仅一天,Steam上的玩家数量便突破了50万,这一热潮也带来了服务器方面的挑战,如创建四人游戏房间困难以及官方服务器连接超时等问题。幸运的是,《幻兽帕鲁》支持自建服务器,最高可支持32人联机游戏。今......
  • SSL 忽略客户端证书是自签名的
    我正在尝试构建一个库来构建一个库来制作Gemini(协议)服务器,到目前为止,除了一件事之外,我一切正常。在gemini规范中,它说客户端能够用tls发送他们的证书以进行识别等,但是当在python中我收到证书时,我收到一个关于它如何自签名的错误ssl.SSLCertVerificationEr......
  • Linux服务器配置SHH免密互通
    服务器A172.25.11.11,服务器B172.25.11.12在服务器A上配置假设服务器A的IP地址为172.25.11.11,我们将在这台服务器上生成密钥对并将公钥复制到服务器B上。生成密钥对:打开终端,执行以下命令生成密钥对。在生成过程中,你可以选择保留默认路径和设置空密码以简化使用,也可......