Я новичок в сетевых концепциях и мне нужно объяснение того, как реализовать протокол связи для отправки различных типов сообщений. В настоящее время я работаю над приложением Какао, которое будет отправлять видео-сообщения между iPhone. В настоящее время я отправляю только сообщения типа 3. Вот поток приложений, который мне нужно реализовать:
Просмотр доступных айфонов в сети (с использованием 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];
Это хороший способ сделать это? Если это так, должны ли правила протокола быть определены более формально, например, в отдельный класс что ли? Я ищу лучшее общее решение, поэтому не обращайте особого внимания на мои рисунки, если есть лучший способ сделать это ...