TCP通信(AsyncSocket)

服務端服務器

1.首先初始化一個服務端的seckot對象socket

//初始化serverSocketspa

    serverSocket = [[AsyncSocket alloc] initWithDelegate:self];3d

2.監聽端口orm

//監聽端口server

    //Port: 端口對象

    [serverSocket acceptOnPort:6666 error:nil];get


//實現協議方法it

#pragma  mark - AsyncSocketDelegatecli

//鏈接到了一個新的客戶端socket

//newSocket:客戶端的socket對象

- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket

{

    //到這裏就說明已經創建了可靠的鏈接,已經完成了"三次握手"

    //下面咱們就能夠發送數據了

    

    //保存鏈接的客戶端socket對象

    clientSocket = newSocket;

    

    //發送數據

    NSString *message = @"客戶端 你好!";

    NSData *data = [message dataUsingEncoding:NSUTF8StringEncoding];

    

    //發送數據給客戶端newSocket

    [newSocket writeData:data withTimeout:-1 tag:100];


    //監聽接收客戶端發送過來的數據(只監聽一次)

    [newSocket readDataWithTimeout:-1 tag:100];

}


//已經發送數據成功

- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag

{

    NSLog(@"發送數據成功!");

}


//已經接收到數據

-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

{

    //將二進制NSData轉換成NSString

    NSString *message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    

    NSLog(@"message:%@", message);

    

    //繼續監聽下一次數據

    [clientSocket readDataWithTimeout:-1 tag:111];

}


客戶端:

1.初始化客戶端的socket

2.鏈接服務器,Host —服務端IP地址  , Port ——-端口,與服務端要一致

[clientSocket connectToHost:@"10.20.155.167" onPort:6666 error:nil];

3.監聽服務器發過來的數據

[clientSocket readDataWithTimeout:-1 tag:100]


//實現協議方法

#pragma  mark - AsyncSocketDelegete

//鏈接服務器成功

//sock:客戶端的socket對象

//host:服務器的IP地址

//port:端口

-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port

{

    //已經確保了可靠的鏈接, 已經完成了"三次握手"

    //下面能夠發送數據了

    

    //發送數據

    NSString *message = @"服務端, 你好!";

    NSData *data = [message dataUsingEncoding:NSUTF8StringEncoding];

    

    //發送給服務端

    [sock writeData:data withTimeout:-1 tag:100];

}

//接收到服務端的數據

-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

{

    NSString *message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    

    NSLog(@"message:%@", message);

    

    //繼續監聽服務端發送過來的數據

    [clientSocket readDataWithTimeout:-1 tag:100];

}

相關文章
相關標籤/搜索