TCPSocket

简单的TCP

- (void)viewDidLoad
{
    [super viewDidLoad];

    _socketArray = [[NSMutableArray alloc] init];
    
    //客户端    ip:端口
    _sendSocket = [[AsyncSocket alloc] initWithDelegate:self];
    //服务端
    _recvSocket = [[AsyncSocket alloc] initWithDelegate:self];
    //服务端开始监听有没有客户端来连接
    [_recvSocket acceptOnPort:5566 error:nil];
}
//如果服务端接收到了客户端连接
- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket{
    //保存连接
    [_socketArray addObject:newSocket];
    //接收客户端发送消息
    [newSocket readDataWithTimeout:-1 tag:0];
}

//服务端接收到了消息
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
    //接收客户端消息
    if (tag == 0) {
        NSString* str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
        _textView.text = [NSString stringWithFormat:@"%@%@:%@\n",_textView.text,sock.connectedHost,str];
    }
    //接收服务端消息
    if (tag == 1) {
        NSString* str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
        _textView.text = [NSString stringWithFormat:@"%@\n",str];
        NSLog(@"%@",str);
    }
        //继续监听
    [sock readDataWithTimeout:-1 tag:0];
}



//客户端
//连接到服务端
- (void)conToHost:(id)sender{
    //如果是连接状态,先断开
    if (_sendSocket.isConnected) {
        [_sendSocket disconnect];
    }
    //连接
    [_sendSocket connectToHost:_ipField.text onPort:5678 withTimeout:30 error:nil];
}

//发送消息
- (void)sendText:(id)sender{
    //NSString->NSData
    NSData* data = [_sendField.text dataUsingEncoding:NSUTF8StringEncoding];
    //发送
    [_sendSocket writeData:data withTimeout:30 tag:0];
    _textView.text = [NSString stringWithFormat:@"%@我说:%@\n",_textView.text,_sendField.text];
    _sendField.text = @"";
}

//发送后调用
- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag{

}

//连接上调用
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{
    NSLog(@"已连接");
    //想接收服务器发来的消息
    [_sendSocket readDataWithTimeout:-1 tag:1];
}

//断开后调用
- (void)onSocketDidDisconnect:(AsyncSocket *)sock{
    NSLog(@"已断开");
}


你可能感兴趣的:(TCPSocket)