asyncSocket发送图片
现在我向服务器发送一个图片数据,采取分包发送。客户端用for循环,向服务器发送包,但是服务器端只接收到部分数据,丢包现象很严重,难道是客户端这边发送的太快了?求大神解答有没有一个好的方法来解决一下? --------------------编程问答-------------------- 为什么要for循环发,图片很大吗?还是要边发服务器边显示? --------------------编程问答-------------------- #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包
}
--------------------编程问答-------------------- 不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut 递归循环接受,用一个NSMutableData 接受每次的数据,希望能帮到你 --------------------编程问答--------------------
已经写上递归了,用for循环丢包严重的原因是socket上个包没有发送完,就直接发下个包了。胆识我在onSocket:(AsyncSocket *)sock didWriteData的回调中发送下个包,服务器那边还是收到部分包,还是丢包。最后还是用服务器收到包后给个应答在继续发的。用这个方法后,又出现了粘包现象,晕死了。TCP协议,每次发送包的内容为1060字节,服务器的接受缓存为2K,粘包现在现在还没有很好的解决。 --------------------编程问答--------------------
兄弟,加油!服务器端知道的不太多,我现在的主要是ios开发,服务器端都是公司写好的。。。。 --------------------编程问答-------------------- http://www.vckbase.com/index.php/wv/10 --------------------编程问答--------------------
关于 asyncSocket 发送图片,求asunchaofan指导啊(QQ1101367326),我的问题是上传文件,然后服务器会回传进度跟图片的地址,但是我可以接受到进度,接受不到图片地址!!
感谢啊感谢啊 --------------------编程问答--------------------
服务器端用0xffff,甚至更大的缓冲接收啊,每次只能收一个包的缓冲,肯定会丢包的。
补充:移动开发 , iPhone