简易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

 

 

posted on 2013-01-29 10:31  灰色的人  阅读(201)  评论(0编辑  收藏  举报

导航