TCP通讯(AsyncSocket)
TCP通讯(AsyncSocket)
踩尾巴的妖精 发表于2年前
TCP通讯(AsyncSocket)
  • 发表于 2年前
  • 阅读 366
  • 收藏 3
  • 点赞 1
  • 评论 6

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

服务端

1.首先初始化一个服务端的seckot对象

//初始化serverSocket

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

2.监听端口

//监听端口

    //Port: 端口

    [serverSocket acceptOnPort:6666 error:nil];


//实现协议方法

#pragma  mark - AsyncSocketDelegate

//连接到了一个新的客户端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];

}


共有 人打赏支持
粉丝 19
博文 17
码字总数 5395
评论 (6)
邪恶胖子
这个是什么语言?
踩尾巴的妖精

引用来自“邪恶胖子”的评论

这个是什么语言?

object–c
邪恶胖子

引用来自“踩尾巴的妖精”的评论

引用来自“邪恶胖子”的评论

这个是什么语言?

object–c

好像window下面的完成端口
取名字什么的最烦咯
- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
你好,我最近碰到个问题,刚好跟这个有关系:在这个接口里面,newsocket不是指客户端的sock吗?为什么服务端发送信息用它呢?
踩尾巴的妖精

引用来自“取名字什么的真的烦啊”的评论

- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
你好,我最近碰到个问题,刚好跟这个有关系:在这个接口里面,newsocket不是指客户端的sock吗?为什么服务端发送信息用它呢?

发送消息之前建立连接
取名字什么的最烦咯

引用来自“踩尾巴的妖精”的评论

引用来自“取名字什么的真的烦啊”的评论

- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
你好,我最近碰到个问题,刚好跟这个有关系:在这个接口里面,newsocket不是指客户端的sock吗?为什么服务端发送信息用它呢?

发送消息之前建立连接
多谢,已解决
×
踩尾巴的妖精
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: