AsyncSocket中tag參数的用处

tag參数是为了在回调方法中匹配发起调用的方法的,不会加在数据传输中。

调用write方法,等待接收消息。收到消息后,会回调didReadData的delegate方法,

delegate方法中的tag和发起read的方法中的tag是相应的。

- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag;

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

write和read是一样:writeData方法和相应的delegate方法didWriteDataWithTag的tag是相应的。

- (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag;

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

需注意的一点是:发送时的tag和接收时的tag是无关的。

以read为例分析:

- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag

上面的方法会生成一个数据类:AsyncReadPacket,此类中包括tag,并把此对象放入数组theReadQueue中。

在CFStream中的回调方法中,会取theReadQueue最新的一个,在回调方法中取得tag,并将tag传

给回调方法:

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

如此而已。

官方解释:

In addition to this you‘ve probably noticed the tag parameter. The tag you pass during the read/write operation is passed back to you via the delegate method once the read/write operation completes.
It does not get sent over the socket or read from the socket.
It is designed to help simplify the code in your delegate method. For example, your delegate method might look like this:

#define TAG_WELCOME 10

#define TAG_CAPABILITIES 11

#define TAG_MSG 12

...

- (void)socket:(AsyncSocket *)sender didReadData:(NSData *)data withTag:(long)tag

{

if (tag == TAG_WELCOME)

{

// Ignore welcome message

}

else if (tag == TAG_CAPABILITIES)

{

[self processCapabilities:data];

}

else if (tag == TAG_MSG)

{

[self processMessage:data];

}

时间: 2024-10-15 10:45:51

AsyncSocket中tag參数的用处的相关文章

javascript获取当前url中的參数

javascript获取当前页面url中的參数能够使用location的search方法,获取到的是url中?后面的部分,比如http:localhost:8080/Manager/index.jsp? id=1 使用location的search方法能够获取到字符串?id=1;想要获取?后面的键值对能够使用substring方法对其进行截取,截取后获得id=1;须要获得id的值,能够使用split()方法对其进行拆分,拆分表达式为"=".以下看详细样例: window.onload

EBS OAF开发中实现參数式弹出窗体

(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 概览 參数式弹出窗体和嵌入式弹出窗体不一样,它拥有独立的区域,并不嵌入到使用页面中,它里面的内容依据须要来获取和生成,它拥有自己的AM和页面状态,对popup页面事件的处理也不一样.两种弹出式窗体都仅仅在以下四种组件所支持,既不能改变大小也不可移动. 1.        Text(messageStyledText) 2.        Image 3.        Link 4.    

mysqladmin在SuSE linux系统中--sleep參数使用不准确问题

我们都知道,在MySQL中.能够使用mysqladmin命令的extended-status选项来查看MySQL的执行状态,比方获取我们经常关注的几个值: # mysqladmin -uroot -proot ext |grep "Questions\|Queries\|Innodb_rows\|Com_select \|Com_insert \|Com_update \|Com_delete " | Com_delete                               |

C++ 中获取 可变形參函数中的參数

#include <iostream> #include <stdarg.h> using namespace std; int ArgFunc(const char * str, ...) { va_list ap; // 定义參数列表变量 va_start(ap, str); // 确定參数位置.表明从 str 開始获取參数 // 開始获取參数 var_arg(ap, 数据类型) 返回获取的值 cout<<va_arg(ap, int)<<endl; c

CSS3中transition-duration參数对hover前后两种过渡时间的影响

transition-duration这个參数是设置过渡时间的,将transition-duration放在哪个类中.那么在这个类被启用时就会依照transition-duration设定的时间来过渡. 比如.有类 .a 和 .a:hover 1.假设仅仅在 .a 中设定transition-duration: 3s;的话.那么在鼠标覆盖这个元素和鼠标离开元素时.过渡时间都是3s. 2.假设在 .a 中设定transition-duration: 3s; 在 .a:hover 中设定transi

struts开发&amp;lt;struts中的參数传递.三&amp;gt;

不说废话,直接上干货 1.通过set和get传递參数 添加username 和password两个属性并添加set和get方法 package fzl.user.struts.demo; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private String u

AsyncSocket中tag参数的用处

tag参数是为了在回调方法中匹配发起调用的方法的,不会加在传输数据中. 调用write方法,等待接收消息.收到消息后,会回调didReadData的delegate方法, delegate方法中的tag和发起read的方法中的tag是对应的. - (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag; - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)da

Web容器自己主动对HTTP请求中參数进行URLDecode处理

这篇文章转载自 : Web容器自己主动对HTTP请求中參数进行URLDecode处理 如题.在Java中或许非常多人都没有注意到当我们发送一个http请求时,假设附带的參数被URLEncode之后,到达web容器之后,开发人员获取到的參数值会自己主动变成了encode之前的值.这是一个非常好的特点,开发人员全然能够忽略http的參数是否须要decode这样的事,可是decode究竟是在什么发生的呢? 第一步就是从request.getParameter()方法下手,可是ServletReques

ionic新手教程第七课-简要说明几种界面之间的參数传递及优缺点

截至2016年4月13日19点32分,我公布的ionic新手教程,已经公布6课了, 总訪问量将近6000,平均每节课能有1000的訪问量.当中訪客最多的是第三课有2700的訪客. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 事实上我開始的时候计划的挺好的,就依照我这阶段的安排,慢慢的带大家做一个