永发信息网

socket 传图片不完整

答案:2  悬赏:0  手机版
解决时间 2021-02-22 05:36
socket编程,基于TCP协议,用VC开发的服务器端向java开发的客户端发送图片,bmp格式的,但客户端只接收到一半的图片,另一半是黑色,这是什么原因造成的?该如何解决?
最佳答案
TCP传送?
我想你不是传送的结构体吧,你一定是只发包了,但是并没有发包的ID,如果有一个ID控制包的位置的话,我想不会出这种错误。
你是怎么判断文件传送结束的。
BMP头里面有个变量是文件的长度,如果你在客户端接受的时候,遇到一个标志意思是文件的结束的话,客户端会结束接收,并不再继续接收(我是这么理解的,我没看到你的代码,大致我也就能这么说),虽然客户端停止接受了,但是BMP头还在,它里面的文件长度还在,后面缺少的包、数据之类的东西,我想它是用0来补充了,而RGB(0,0,0)就是黑色,所以你后面的东西都被0覆盖了

传送的时候,应该尽可能在每个包里面都放一个简略的文件信息
比如
typedef struct _BmpBmpBmp
{
int All;//一共有多少个包
int index;//第多少个包,索引
//再加一些其他的信息
char a[???];//根据需要开辟空间,每次传送的数据
}BBBmp;
全部回答
方法没有问题,你检查一下client里面read和fwrite的size参数,肯定是这里搞错了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新地方地址在哪,我要去那里办事
英语翻译硕士能够应聘国家电网公司吗?
我是弹双排键的,但是对MIDI制作一窍不通,想
杜阳家和购物中心地址在什么地方,想过去办事
没学历 没关系 没技术 身体不能干重体力活 能
我的电脑怎么没有光驱
读地球圈层结构示意图,完成17~18题。【小题
尚境地址有知道的么?有点事想过去
He hurries home to get his train ticket by
属马1978年11月28日出生,直销行业我会做成功
求大神把 你问我为什么顽固而专一 天下太大总
我微信买了一串琥珀,对方给我说是多米的,买
虫虫飞地址在哪,我要去那里办事
贷款网签可信吗?
跳舞用英语怎么
推荐资讯
广州市天河区工商联怎么去啊,有知道地址的么
网球运动在平坦的长方形,一般是草地、粘土或
肖赶庄在哪里啊,我有事要去这个地方
孟美岐的粉丝名叫什么?
桂林大公馆观后感
什么的立交桥填空
怎么找不到怪物猎人边境z
芸豆煮多久
碰到嘴贱的人应该怎么办
比利时的仓鼠粮好吗?
狗狗双手趴在地上夹着尾巴敲着屁股是什么意思
那坡地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?