我需要实现一个应用程序来监控iPhone上不同应用程序的入站/出站连接。我的应用程序将在后台使用苹果的背景多任务功能为voip和导航器运行。 我可以使用私有api,因为我的客户端在appstore上不需要这个应用程序。
感谢。
答案 0 :(得分:4)
我完成了这件事。
我不需要任何私有Api来获取入站/出站活动连接的信息。 它只是你需要了解基本的C编程和一些耐心。
我写了关于这个的苹果开发论坛,并得到了回复 -
From my perspective most of what I have to say about this issue is covered in the post referenced below.
<https://devforums.apple.com/message/748272#748272>>
The way to make progress on this is to:
o grab the relevant headers from the Mac OS X SDK
o look at the Darwin source for netstat to see how the pieces fit together
WARNING: There are serious compatibility risks associated with shipping an app that uses this technique; it's fine to use this for debugging and so on, but I recommend against shipping code like this to end users.
我一步一步做的是 -
1)从BSD opensource下载code of netstat -
2)将此添加到您的新iphone项目中。
3)看,ios sdk中没有一些头文件,所以你需要从opensource.apple.com复制并在你的iphone sdk中添加相关路径 -
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/include
我的xcode版本是4.5.2。所以这是与我的xcode相关的路径。根据xcodes的版本你可以有不同的路径。无论如何。并记得在iosSdk和amp;中添加这些标题。 iOSSimulatorSdk都可以使代码在设备和模拟器上运行。
4)你可能会发现netstat代码中的一些小错误,这些错误与查找头文件中某些结构的定义有关..e“struct xunpcb64”.dont wory。那里有定义。你需要在这些头文件中注释一些“#if!TARGET_OS_EMBEDDED”#else,以便ios sdk可以在那些if条件下访问并访问定义。(需要一些尝试和错误。耐心。)
5)最后你将编译你的代码。欢呼!!
答案 1 :(得分:1)
如果您还没有看过,我已经在iPhone上成功使用了它。
https://developer.apple.com/library/ios/ipad/#qa/qa1176/_index.html
我意识到这不完全是你想要的。
答案 2 :(得分:0)
一般来说,我同意Suneet。您只需要网络嗅探器。
您可以尝试将WireShark的部分端口(它是开源的,适用于MacOS)连接到iOS。 iOS和OS X共享内核的大部分内容,因此如果iOS上没有明确禁止它,它应该适合你。
WireShark是一个非常大的产品,因此您可能会寻找另一个可在OS X上运行的开源网络嗅探器。