使用socket第三方库 AsyncSocket来实现手机客户端和PC服务器端的通信问题

在一个ios应用中我使用socket第三方库 AsyncSocket来实现手机客户端和PC服务器端的通信。服务器可以收到客户端发来信息,也有返回信息,但是客户端却没有收到这个返回的信息,这个为什么呢?下面是一部分代码



#import "ViewController.h"

@implementation ViewController
@synthesize socket;
@synthesize host;
@synthesize message;
@synthesize port;
@synthesize status;
@synthesize button;


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle
-(void)addText:(NSString *)str
{
    status.text = [status.text stringByAppendingFormat:@"%@\n",str];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    host.text = @"61.191.200.214";
    port.text = @"9631";

    [button setTitle:@"连接" forState:UIControlStateNormal];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
- (void)viewDidUnload
{
    [self setHost:nil];
    [self setMessage:nil];
    [self setStatus:nil];
    [self setPort:nil];
    [super viewDidUnload];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port
{
    [self addText:[NSString stringWithFormat:@"连接到:%@",host]];
    [socket readDataWithTimeout:-1 tag:0];
}

- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err
{
}
- (IBAction)send:(id)sender { //开始按钮
    //连接服务器端
    socket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
    NSError *err = nil;
    if(![socket connectToHost:host.text onPort:[port.text intValue] error:&err])
    {
        [self addText:err.description];
    }else
    {
        [self addText:[NSString stringWithFormat: @"打开%@端口",socket.localHost]];
    }
        
    //发送数据
    if (message.text.length!=0){
        NSString* str_send=[[NSString alloc] initWithString:[NSString stringWithFormat:@"send%@",message.text]];
        [socket writeData:[str_send dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:-1];
        [self addText:[NSString stringWithFormat:@"发送:%@",message.text]];
            
    }else{
        NSString* str_send= @"receive";
        [socket writeData:[str_send dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:-1];
        [message resignFirstResponder];
        [socket readDataWithTimeout:-1 tag:0];
    }
}

-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
    NSString *receive = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    [self addText:[NSString stringWithFormat:@"%@:%@",sock.connectedHost,receive]];
    [socket readDataWithTimeout:-1 tag:0];
}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值