GHOX 2021-09-22 10:39 采纳率: 66.7%
浏览 175
已采纳

如何使用 C++ 的 socket 传输图片

 我现在已经可以使用 SOCKET 进行普通的字符传输了,但是怎么样才可以使用 SOCKET 传输 BMP 类型的图片呢?

BMP类型的文件好像是二进制存储的,如果直接转换成 TXT ,复制的话会损坏,怎么处理?

  • 写回答

1条回答 默认 最新

  • 於黾 2021-09-22 10:40
    关注

    socket不也是传输二进制流吗,你直接把bmp文件的二进制数组发送就行了。
    注意要循环发送,循环接收,不要一下发一个超大的数据包
    如果在广域网传输,还有考虑粘包分包的问题。
    比如你发送的时候是固定每2000字节一个包循环发送
    接收的时候可能会变成500字节一个包,3000字节一个包,路由器会自动给你分包粘包
    但是tcp协议的好处就是绝对不会丢包(除非连接中断)而且一定能保证包达到的顺序和发出的顺序一致,那么你接收的时候把它们都按顺序连接起来(其实就是直接写入文件里面就行),但是包头最好做好校验,整个包到底多长最好一开始接收端就知道,以便接收到全部的数据之后正确的关闭文件,而不是无限等待。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 9月22日
  • 创建了问题 9月22日

悬赏问题

  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”