文档章节

TCP通讯(AsyncSocket)

踩尾巴的妖精
 踩尾巴的妖精
发布于 2015/10/23 19:51
字数 473
阅读 990
收藏 3

阿里云携手百名商业领袖、技术大咖,带您一探行进中的数字新基建!>>>

服务端

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];

}


© 著作权归作者所有

下一篇: UITableView笔记
踩尾巴的妖精
粉丝 24
博文 18
码字总数 6193
作品 0
深圳
程序员
私信 提问
加载中

评论(6)

取名字什么的最烦咯
取名字什么的最烦咯

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

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

- (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吗?为什么服务端发送信息用它呢?
邪恶胖子
邪恶胖子

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

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

这个是什么语言?

object–c

好像window下面的完成端口
踩尾巴的妖精
踩尾巴的妖精 博主

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

这个是什么语言?

object–c
邪恶胖子
邪恶胖子
这个是什么语言?
IOS实例 实现基于Socket TCP/IP通讯

IOS实例 实现基于Socket TCP/IP通讯是本文要介绍的内容,之前写过基于http的网络传输层的通讯,现在项目需要实现tcp/ip的通讯协议,通过网络查找了一下,已经有人写好了公开的类库AsyncSock...

嘻哈开发者
2014/05/30
1.7K
0
ios实现基于socket tcp/ip 的通讯

之前写过基于http的网络传输层的通讯,现在项目需要实现tcp/ip的通讯协议,通过网络查找了一下,已经有人写好了公开的类库AsyncSocket,下面介绍一下AsyncSocket的使用方法。 AsyncSocket的官...

iKaisa
2013/05/02
3.2K
4
socket第三方库 AsyncSocket(GCDAsyncSocket)

Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,Socket一定包含了通信的双发,即客户端(Client)...

AmoyAI
2012/11/25
2W
3
iOS-从零开始自建TCP通道

目录 前言 TCP通道的建立 自定义应用层协议 请求体 响应体 请求和响应的序列化 任务机制 管理器 Demo 参考资料 前言 本文的起因是希望像《美团点评移动网络优化实践》中的方案一样、建设一个...

kirito_song
2018/08/11
0
0
socket (tcp 局域网内)简单示例

这里使用的是第三方库 AsyncSocket。故使用时, 需要先添加第三方库,并添加静态库 CFNetWork.framework;并在实现类时,导入头文件 AsyncSocket.h 服务器端: //1.初始化服务端socket AsyncS...

木木情深
2014/02/28
206
0

没有更多内容

加载失败,请刷新页面

加载更多

史上最全的“文件或目录损坏且无法读取”的解决办法大集合

问题描述: G盘打不开文件或目录损坏且无法读取,是因为这个I盘的文件系统内部结构损坏导致的。史上最全的“文件或目录损坏且无法读取”的解决办法大集合具体的恢复方法看正文 工具/软件:极...

计算无敌
今天
9
0
2048游戏的最佳算法是什么? - What is the optimal algorithm for the game 2048?

问题: I have recently stumbled upon the game 2048 . 我最近偶然发现了2048游戏。 You merge similar tiles by moving them in any of the four directions to make "bigger" tiles. 您可......

javail
今天
9
0
Spring Cloud Ribbon 客户端负载均衡

Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等,内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略: 简单轮询负载均衡 加权轮询负载均衡 区域...

泥瓦匠BYSocket
今天
7
0
为什么在Python 3中“范围(1000000000000000(1000000000000001))”这么快?

问题: It is my understanding that the range() function, which is actually an object type in Python 3 , generates its contents on the fly, similar to a generator. 据我了解, ra......

技术盛宴
今天
9
0
OSChina 周四乱弹 —— 卖全家桶!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :陈慧娴的单曲《与泪抱拥》 陈慧娴的嗓音加上向雪怀的词,这样的经典组合真不多。#今日歌曲推荐# 《与泪抱拥》- 陈慧娴 手机党少年...

小小编辑
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部