【发布时间】:2011-05-10 22:26:20
【问题描述】:
我是网络概念的新手,需要了解如何实现用于发送不同类型消息的通信协议。我目前正在开发一个 Cocoa 应用程序,它将在 iPhone 之间发送视频消息。目前我只发送类型 3 的消息。这是我需要实现的应用流程:
浏览网络上可用的 iPhone(使用 Bonjour)
-
找到 iPhone 客户端后,发送 NSData "请求联系信息" (MessageType1)
iPhone 客户端将返回一个带有联系信息的 NSData 实例 (MessageType2)
使用录制的视频发起一条新消息,发送给选定的联系人(MessageType3)
当接收到不同类型的消息时,需要对它们进行不同的处理。我想解决它的一种方法是在消息中添加一个标头来标识消息类型并在接收方提取它,然后像这样处理:
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];
这是一个很好的方法吗?如果是这样,是否应该以更正式的方式定义协议规则,例如在一个单独的班级或什么的?我在这里寻找最佳的整体解决方案,所以如果有更好的方法,请不要过多注意我的图纸......
【问题讨论】:
标签: cocoa-touch cocoa networking network-protocols