socket编程过程中的一些整理(1)

本文总结了作者在进行Socket编程过程中的实践经验,包括UDP与TCP的数据传输限制、接收文件时的最佳实践、处理大文件的方法、文件读写操作的具体实现、数据类型的转换等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做相关socket方面的一个小程序,就做了一些小整理:

1.UDP:每次最多传65536(64Kb)的大小,TCP:没有限制,具体没试过,因为我限制是32K。

2.如果发送文件的话,再接收端那边最好使用recv(fd, buf, size, MSG_WAITALL) 接收,不然的话,有可能会出现乱码,size是和客户端商量好的

3.如果打开一个比较大的文件最好用fopen64(path.data(),"rb"),因为fopen貌似最多只能打开2GB的文件

4.fp=fopen64(path.data(),"wb+")会以读写的方式打开,如果不存在就创建文件,但如果你写东西进fp的话,他会以重写的方式写入,所以不建议采用,最好用

 FILE * fp;

   if((fp = fopen64(path.data(),"rb")) == NULL)

 {

        if((fp = fopen64(path.data(),"w")) == NULL)

       {

             cout<<"创建文件失败"<<endl;

             return -1;

      }

 }

  fclose(fp);

  if((fp = fopen64(path.data(),"rb+")==NULL)

{

      cout<<"读写方式打开文件失败"<<endl;

}

fseek(fp5, offset, SEEK_SET);
//            size_t size = fwrite(buf, 1, csize, fp);
//            fclose(fp);

  这样来打开文件,把内容写进去。

5.atoi(recvBuf);将char * 转化为int

6.int size = 5;

sprintf(sizeBuf,"%d",size);将int 转化为char *


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值