asyncSocket发送图片

Hw_bill_com 2012-12-22 09:35:55
现在我向服务器发送一个图片数据,采取分包发送。客户端用for循环,向服务器发送包,但是服务器端只接收到部分数据,丢包现象很严重,难道是客户端这边发送的太快了?求大神解答

有没有一个好的方法来解决一下?
...全文
343 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hslinux 2013-04-24
  • 打赏
  • 举报
回复
服务器端用0xffff,甚至更大的缓冲接收啊,每次只能收一个包的缓冲,肯定会丢包的。
baibai_1990 2013-04-23
  • 打赏
  • 举报
回复
引用 5 楼 asunchaofan 的回复:
引用 4 楼 Hw_bill_com 的回复:引用 3 楼 asunchaofan 的回复:不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut 递归……
关于 asyncSocket 发送图片,求asunchaofan指导啊(QQ1101367326),我的问题是上传文件,然后服务器会回传进度跟图片的地址,但是我可以接受到进度,接受不到图片地址!! 感谢啊感谢啊
Hw_bill_com 2012-12-26
  • 打赏
  • 举报
回复
引用 3 楼 asunchaofan 的回复:
不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut 递归循环接受,用一个NSMutableData 接受每次的数据,希望能帮到你
已经写上递归了,用for循环丢包严重的原因是socket上个包没有发送完,就直接发下个包了。胆识我在onSocket:(AsyncSocket *)sock didWriteData的回调中发送下个包,服务器那边还是收到部分包,还是丢包。最后还是用服务器收到包后给个应答在继续发的。用这个方法后,又出现了粘包现象,晕死了。TCP协议,每次发送包的内容为1060字节,服务器的接受缓存为2K,粘包现在现在还没有很好的解决。
zhsl 2012-12-26
  • 打赏
  • 举报
回复
http://www.vckbase.com/index.php/wv/10
阿凡树 2012-12-26
  • 打赏
  • 举报
回复
引用 4 楼 Hw_bill_com 的回复:
引用 3 楼 asunchaofan 的回复:不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut 递归循环接受,用一个NSMutableData 接……
兄弟,加油!服务器端知道的不太多,我现在的主要是ios开发,服务器端都是公司写好的。。。。
阿凡树 2012-12-25
  • 打赏
  • 举报
回复
不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut 递归循环接受,用一个NSMutableData 接受每次的数据,希望能帮到你
阿凡树 2012-12-25
  • 打赏
  • 举报
回复
#pragma mark - scoket delegate - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{ NSLog(@"didConnectToHost"); [_AFSocket readDataWithTimeout:timeOut tag:0]; } - (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err{ NSLog(@"willDisconnectWithError==%@",err); } - (void)onSocketDidDisconnect:(AsyncSocket *)sock { NSLog(@"onSocketDidDisconnect"); } - (void)onSocketDidSecure:(AsyncSocket *)sock{ NSLog(@"onSocketDidSecure"); } - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{ [_AFSocket readDataWithTimeout:timeOut tag:0];//循环接受IP包 }
river80 2012-12-23
  • 打赏
  • 举报
回复
为什么要for循环发,图片很大吗?还是要边发服务器边显示?

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧