2010-05-17 2 views
1

Мне нужно общаться с iPhone. У меня есть его IP-адрес и порт (полученный через Bonjour).Должен ли TcpClient использоваться для этого сценария?

Мне нужно отправить заголовок «0x50544833» (или аналогичный, это номер HEX), затем размер данных (ниже), а затем сами данные.

данные просто строка, которая выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE plist SYSTEM "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
     <key>clientName</key> 
     <string>XXX</string> 
     <key>clientService</key> 
     <string>0be397e7-21f4-4d3c-89d0-cdf179a7e14d</string> 
     <key>registerCode</key> 
     <string>0000</string> 
    </dict> 
</plist> 

Требование также говорит, что я должен отправить данные в маленьком формате с обратным порядком байтов (который я думаю, по умолчанию для Intel в любом случае).

Таким образом, это будет: hex_number + размер данных + string_with_the_above_xml.

Мне нужно отправить это на iPhone и прочитать ответ.

Что было бы, по вашему опыту, лучшим способом отправить эти данные (и прочитать ответ)?

обновление: Я не писал программное обеспечение для iPhone. Он использует Tcp/Ip. Порт зависит от операционной системы, но я видел его от 57xxx до 60xxxx, не всегда. Версия Mac этого программного обеспечения использует Tcp/Ip. У меня нет доступа к его исходному коду, но я контактирую с его разработчиком, который объяснил мне формат данных, которые мне нужно отправить, а затем, после того как служба Bonjour была разрешена, «откройте сокет и ...»

+0

Какое программное обеспечение на конце iPhone прослушивает ваши данные? Это то, что вы написали? Или как веб-сервер или что-то еще? Ответ на ваш вопрос продиктован тем протоколом, который iPhone ожидает от вас. – JeremyP

+0

Программное обеспечение для iPhone не было написано мной, но я поддерживаю связь с его разработчиком. Он не использует ничего, кроме TCP/IP (есть версия Mac для программного обеспечения, которое я «портирую»). По словам разработчика: «После того как вы разрешили услугу, откройте сокет и ...». –

+0

Тебе не мало endian для строк, которые не являются unicode. – TomTom

ответ

1

Да, вы можете использовать TcpClient для этого сценария. В этом случае он отлично работает.

Смежные вопросы