2010-05-17 111 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。在这种情况下它将完美工作。

相关问题