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

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

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

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

  • 写回答

1条回答 默认 最新

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

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

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

报告相同问题?

问题事件

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