我对网络概念很陌生,需要对如何实现用于发送不同类型消息的通信协议进行说明。我目前正在开发一个可在iPhones之间发送视频信息的可可应用程序。目前,我只发送类型3的消息。下面是我需要实现的应用程序流:
当接收到不同类型的消息时,需要对它们进行不同的处理。我想解决这个问题的一种方法是在消息中添加一个标头,以标识消息类型并在接收方提取它,然后这样处理:
if (messageType == 1) // MessageType1
[self sendMyContactInfo:(Contact *)ownInfo];
if (messageType == 2) // MessageType2
[self updateViewWithContactInfo:(Contact *)contactInfo];
if (messageType == 3) // MessageType3
[self sendMessageToSelectedContact:(Message *)message]为了为MessageType3创建消息,我将这样做:
/* Not currently implemented */
NSMutableData *data = [[NSMutableData alloc] init];
int messageType = 3;
[data appendBytes:messageType]
/* Already Implemented */
NSData *encodedMessage = [NSKeyedArchiver archivedDataWithRootObject:message];
[data appendData:encodedMessage];
[self sendMessage:(NSData *)encodedMessage];这样做好吗?如果是这样的话,协议规则是否应该以更正式的方式定义,例如在单独的类或其他方面?我在这里寻找最好的整体解决方案,所以如果有更好的方法,不要太在意我的图纸.
发布于 2011-05-10 14:26:20
这样做好吗?
这是定义通信协议的标准方法。来自维基百科文章
数字消息位串被交换。位串在字段中被划分,每个字段携带与该协议相关的信息。从概念上说,位串分为标题区和数据区两部分。实际消息存储在数据区域中,因此报头区域包含与协议更相关的字段。传输的大小是有限的,因为传输错误的数量与所发送的位串的大小成正比。长度大于最大传输单元(MTU)的位串被分成适当大小的段。每个片段具有几乎相同的标题区域内容,因为只有一些字段依赖于数据区域的内容(尤其是CRC字段,其中包含根据数据区域内容计算的校验和)。
结束维基百科引文
如果是这样的话,协议规则是否应该以更正式的方式定义,例如在单独的类或其他方面?
那随你的便。没有必要,因为您的应用程序正在与应用程序的其他副本通信。
https://stackoverflow.com/questions/5950893
复制相似问题