简易TCP传输
ViewController.h
1 #import <UIKit/UIKit.h> 2 #import "AsyncSocket.h" 3 4 @interface ViewController : UIViewController 5 <AsyncSocketDelegate> 6 { 7 IBOutlet UITextField *ipField; 8 IBOutlet UITextField *sendField; 9 IBOutlet UITextView *contentView; 10 11 AsyncSocket *recvSocket; 12 AsyncSocket *sendSocket; 13 14 NSMutableArray *recvArray; 15 } 16 17 -(IBAction)sendText:(id)sender; 18 19 @end
ViewController.m
1 #import "ViewController.h" 2 3 @implementation ViewController 4 5 -(void)sendText:(id)sender 6 { 7 //如果没有连接,那么去连接服务端 8 if (sendSocket.isConnected == NO) { 9 [sendSocket connectToHost:ipField.text onPort:5678 withTimeout:60 error:nil]; 10 //什么时候知道连接成功 11 } 12 NSData *data = [sendField.text dataUsingEncoding:NSUTF8StringEncoding]; 13 //发送数据 14 [sendSocket writeData:data withTimeout:60 tag:100]; 15 //什么时候知道数据发送成功 16 } 17 18 - (void)viewDidLoad 19 { 20 [super viewDidLoad]; 21 22 recvArray = [[NSMutableArray alloc]initWithCapacity:0]; 23 24 //服务端 25 recvSocket = [[AsyncSocket alloc]initWithDelegate:self]; 26 //客户端 27 sendSocket = [[AsyncSocket alloc]initWithDelegate:self]; 28 29 //服务端开始等待别的客户端的连接 30 //65535 >5000 31 [recvSocket acceptOnPort:5678 error:nil]; 32 //那么什么时候接受到了一个连接 33 } 34 35 #pragma mark - AsyncSocketDelegate 36 //AsyncSocketDelegate 37 -(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket 38 { 39 [recvArray addObject:newSocket]; 40 //等待客户端发送数据 超时时间-1一直等 41 [newSocket readDataWithTimeout:-1 tag:100]; 42 //什么时候读取到了数据 43 } 44 45 //调用这个方法就证明接受到了客户端发送的数据 46 -(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag 47 { 48 NSString *str = [[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]autorelease]; 49 contentView.text = [NSString stringWithFormat:@"%@\n对方说:%@",contentView.text,str]; 50 //继续等待服务端发送数据 51 [sock readDataWithTimeout:-1 tag:100]; 52 } 53 54 //调用这个方法的时候,就证明连接成功 55 -(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port 56 { 57 } 58 //调用这个方法的时候,就证明发送成功 59 -(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag 60 { 61 } 62 63 @end