当前位置:编程学习 > wap >>

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 接受每次的数据,希望能帮到你 --------------------编程问答--------------------
引用 3 楼 asunchaofan 的回复:
不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut  递归循环接受,用一个NSMutableData 接受每次的数据,希望能帮到你

已经写上递归了,用for循环丢包严重的原因是socket上个包没有发送完,就直接发下个包了。胆识我在onSocket:(AsyncSocket *)sock didWriteData的回调中发送下个包,服务器那边还是收到部分包,还是丢包。最后还是用服务器收到包后给个应答在继续发的。用这个方法后,又出现了粘包现象,晕死了。TCP协议,每次发送包的内容为1060字节,服务器的接受缓存为2K,粘包现在现在还没有很好的解决。 --------------------编程问答--------------------
引用 4 楼 Hw_bill_com 的回复:
引用 3 楼 asunchaofan 的回复:不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut  递归循环接受,用一个NSMutableData 接……

兄弟,加油!服务器端知道的不太多,我现在的主要是ios开发,服务器端都是公司写好的。。。。 --------------------编程问答-------------------- http://www.vckbase.com/index.php/wv/10 --------------------编程问答--------------------
引用 5 楼 asunchaofan 的回复:
引用 4 楼 Hw_bill_com 的回复:引用 3 楼 asunchaofan 的回复:不知道你的问题解决木有,这个问题我也遇见过,在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag函数中写上 readDataWithTimeout:timeOut  递归……


关于 asyncSocket 发送图片,求asunchaofan指导啊(QQ1101367326),我的问题是上传文件,然后服务器会回传进度跟图片的地址,但是我可以接受到进度,接受不到图片地址!!
感谢啊感谢啊 --------------------编程问答--------------------

服务器端用0xffff,甚至更大的缓冲接收啊,每次只能收一个包的缓冲,肯定会丢包的。
补充:移动开发 ,  iPhone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,