IT虾米网

iOS开发-AsynSocket详解

itxm 2018年06月24日 手机开发 411 0

导入AsynSocket库,导入CFNetwork系统库

1.新建single view工程

ViewController.h文件

    #import <UIKit/UIKit.h>   
    #import "AsyncSocket.h"   
       
    @interface ViewController : UIViewController <AsyncSocketDelegate> {   
        NSMutableArray *_socketArray;   
        AsyncSocket *_sendSocket;//发送   
        AsyncSocket *_recvSocket;//接收   
    }   
    - (IBAction)sendClick:(id)sender;   
    @property (retain, nonatomic) IBOutlet UITextField *ipField;   
    @property (retain, nonatomic) IBOutlet UITextField *sendField;   
    @property (retain, nonatomic) IBOutlet UITextView *msgView;   
    - (IBAction)conClick:(id)sender;   
    - (IBAction)sendClick:(id)sender;   
    @end  

2.ViewController.m文件
    #import "ViewController.h"   
       
    @implementation ViewController   
    @synthesize ipField;   
    @synthesize sendField;   
    @synthesize msgView;   
       
    - (void)viewDidLoad   
    {   
        [super viewDidLoad];   
           
        //初始化socket数组,存放socket   
        _socketArray = [[NSMutableArray alloc] init];   
           
        //实例化客户端和服务器socket   
        _sendSocket = [[AsyncSocket alloc] initWithDelegate:self];   
        _recvSocket = [[AsyncSocket alloc] initWithDelegate:self];   
           
        //服务器段开始监听   
        [_recvSocket acceptOnPort:5566 error:nil];   
    }   
       
    //服务器端接收到新的socket   
    - (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket {   
        //服务器端将收到的socket存入数组   
        [_socketArray addObject:newSocket];   
        //开始接收数据   
        [newSocket readDataWithTimeout:-1 tag:0];   
    }   
       
    //服务器端接收到信息   
    - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {   
        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];   
        self.msgView.text = [NSString stringWithFormat:@"%@%@:%@\n", self.msgView.text, sock.connectedHost, string];   
        [sock readDataWithTimeout:-1 tag:0];//循环   
    }   
       
    //连接   
    - (IBAction)conClick:(id)sender {   
        if (_sendSocket.isConnected) {   
            [_sendSocket disconnect];   
        }   
        [_sendSocket connectToHost:self.ipField.text onPort:5566 withTimeout:30 error:nil];   
    }   
       
    //发送消息   
    - (IBAction)sendClick:(id)sender {   
        NSData *data = [self.sendField.text dataUsingEncoding:NSUTF8StringEncoding];   
        [_sendSocket writeData:data withTimeout:30 tag:0];   
        self.sendField.text = @"";   
    }   
       
    - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port   
    {   
        NSLog(@"连接服务器成功");   
    }   
       
    - (void)onSocketDidDisconnect:(AsyncSocket *)sock   
    {   
        NSLog(@"断开连接");   
    }   
       
       
       
    - (void)dealloc {   
        [ipField release];   
        [sendField release];   
        [msgView release];   
        [ipField release];   
        [super dealloc];   
    }   
       
    - (void)viewDidUnload {   
        [self setIpField:nil];   
        [super viewDidUnload];   
    }   
    @end  

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

iOS异步请求下载图片详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。