2010-05-17 115 views
1

我必須與iPhone通信。我有它的IP地址和端口(通過Bonjour獲得)。應該在這種情況下使用TcpClient嗎?

我需要發送一個頭是「0x50544833」(或類似的,這是一個十六進制數),然後是數據的大小(下面),然後是數據本身。

的數據僅僅是一個字符串,它看起來像這樣:

<?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> 

要求也說,我必須把用little endian格式的數據(我認爲這是英特爾的默認反正)。

所以它會是:hex_number +數據的大小+ string_with_the_above_xml。

我需要將它發送到iPhone並閱讀回覆。

根據你的經驗,發送這些數據的最佳方式是什麼(並閱讀響應)?

更新:我沒有寫iPhone軟件。它使用Tcp/Ip。端口取決於操作系統,但我看到它從57xxx到60xxxx不等。此軟件的Mac版本使用Tcp/Ip。我沒有訪問它的源代碼,但我與其開發人員聯繫,他向我解釋了我需要發送的數據的格式,然後,一旦Bonjour服務解決,「打開一個套接字並...」

+0

iPhone端的什麼軟件正在偵聽您的數據?這是你寫的東西嗎?或者作爲網絡服務器或其他東西?您的問題的答案取決於iPhone希望您使用的協議。 – JeremyP 2010-05-17 10:27:16

+0

iPhone軟件不是我自己寫的,但是我正在和它的開發者聯繫。它不使用TCP/IP以外的其他版本(我正在「移植」該軟件的Mac版本)。據開發人員說:「一旦你解決了服務,打開一個套接字,然後......」。 – 2010-05-17 10:30:48

+0

對於不是unicode的字符串,它是不小的endian。 – TomTom 2010-05-19 05:02:54

回答

1

是的,你可以在這個場景中使用TcpClient。在這種情況下它將完美工作。

相關問題