﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>花太香齐的博客 &#187; iphone</title>
	<atom:link href="http://www.ieliwb.com/tag/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ieliwb.com</link>
	<description>灵感的来临，没有任何预兆；灵感的消失，也不会有告别仪式；用文字记下她们吧，让灵感永存……</description>
	<lastBuildDate>Sun, 21 Nov 2010 03:36:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>一代二代iPhone千万别升级到iOS4.0,警惕!!!!</title>
		<link>http://www.ieliwb.com/iphone-3g-to-ios4-lazy/</link>
		<comments>http://www.ieliwb.com/iphone-3g-to-ios4-lazy/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 14:52:48 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[iPhone/Mac/ObjectC]]></category>
		<category><![CDATA[心情随笔/生活感悟]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/%e4%b8%80%e4%bb%a3%e4%ba%8c%e4%bb%a3iphone%e5%8d%83%e4%b8%87%e5%88%ab%e5%8d%87%e7%ba%a7%e5%88%b0ios4-0%e8%ad%a6%e6%83%95/</guid>
		<description><![CDATA[偶二代机器就是一个活生生的例子,升级后卡的滴血.偶现在每天都运行在安全模式,正常模式放个音乐都卡的吐血......

<img src="http://www.ieliwb.com/u/img/iphone-4.0-screen-1.jpg" alt="" />

后台运行就是个大垃圾,还没以前的插件好用.....

痛苦......
痛苦......
鸡肋......
鸡肋......
纠结......[......]<p class='read-more'><a href='http://www.ieliwb.com/iphone-3g-to-ios4-lazy/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>偶二代机器就是一个活生生的例子,升级后卡的滴血.偶现在每天都运行在安全模式,正常模式放个音乐都卡的吐血&#8230;&#8230;</p>
<p><img src="http://www.ieliwb.com/u/img/iphone-4.0-screen-1.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/iphone-4.0-screen-2.jpg" alt="" /></p>
<p>后台运行就是个大垃圾,还没以前的插件好用&#8230;..</p>
<p>痛苦&#8230;&#8230;<br />
鸡肋&#8230;&#8230;<br />
鸡肋&#8230;&#8230;<br />
纠结&#8230;&#8230;</p>
<p>有视频为证:</p>
<p><embed src="http://player.youku.com/player.php/sid/XMTkzNTg2NjYw/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/iphone-3g-to-ios4-lazy/feed/</wfw:commentRss>
		<slash:comments>1173</slash:comments>
		</item>
		<item>
		<title>关于iPhone/iPad全屏截图与区域截图的几种方法总结</title>
		<link>http://www.ieliwb.com/iphone-ipad-screenshot-methods/</link>
		<comments>http://www.ieliwb.com/iphone-ipad-screenshot-methods/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 07:45:28 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[iPhone/Mac/ObjectC]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[screenshot]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/%e5%85%b3%e4%ba%8eiphoneipad%e5%85%a8%e5%b1%8f%e6%88%aa%e5%9b%be%e4%b8%8e%e5%8c%ba%e5%9f%9f%e6%88%aa%e5%9b%be%e7%9a%84%e5%87%a0%e7%a7%8d%e6%96%b9%e6%b3%95%e6%80%bb%e7%bb%93/</guid>
		<description><![CDATA[<p><strong>关于iPhone/iPad全屏截图与区域截图的几种方法总结<br />
</strong><br />
<strong>截取本区域(self.view):</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">UIGraphicsBeginImageContext</span><span style="color: Olive;">(</span><span style="color: Blue;">CGSizeMake</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">view</span><span style="color: Gray;">.</span><span style="color: Blue;">frame</span><span style="color: Gray;">.</span><span style="color: Blue;">size</span><span style="color: Gray;">.</span><span style="color: Blue;">width</span><span style="color: Gray;">, </span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">view</span><span style="color: Gray;">.</span><span style="color: Blue;">frame</span><span style="color: Gray;">.</span><span style="color: Blue;">size</span><span style="color: Gray;">.</span><span style="color: Blue;">height</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&#038;nbs[......]</span></div></div><p class='read-more'><a href='http://www.ieliwb.com/iphone-ipad-screenshot-methods/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>关于iPhone/iPad全屏截图与区域截图的几种方法总结<br />
</strong><br />
<strong>截取本区域(self.view):</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">UIGraphicsBeginImageContext</span><span style="color: Olive;">(</span><span style="color: Blue;">CGSizeMake</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">view</span><span style="color: Gray;">.</span><span style="color: Blue;">frame</span><span style="color: Gray;">.</span><span style="color: Blue;">size</span><span style="color: Gray;">.</span><span style="color: Blue;">width</span><span style="color: Gray;">, </span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">view</span><span style="color: Gray;">.</span><span style="color: Blue;">frame</span><span style="color: Gray;">.</span><span style="color: Blue;">size</span><span style="color: Gray;">.</span><span style="color: Blue;">height</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">[</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">view</span><span style="color: Gray;">.</span><span style="color: Blue;">layer</span><span style="color: Gray;"> </span><span style="color: Blue;">renderInContext</span><span style="color: Gray;">:</span><span style="color: Blue;">UIGraphicsGetCurrentContext</span><span style="color: Olive;">()]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIImage</span><span style="color: Gray;"> *</span><span style="color: Blue;">viewImage</span><span style="color: Gray;"> = </span><span style="color: Blue;">UIGraphicsGetImageFromCurrentImageContext</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIGraphicsEndImageContext</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIImageWriteToSavedPhotosAlbum</span><span style="color: Olive;">(</span><span style="color: Blue;">viewImage</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p><strong>全屏截图:</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">UIWindow</span><span style="color: Gray;"> *</span><span style="color: Blue;">screenWindow</span><span style="color: Gray;"> = </span><span style="color: Olive;">[[</span><span style="color: Blue;">UIApplication</span><span style="color: Gray;"> </span><span style="color: Blue;">sharedApplication</span><span style="color: Olive;">]</span><span style="color: Gray;"> </span><span style="color: Blue;">keyWindow</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIGraphicsBeginImageContext</span><span style="color: Olive;">(</span><span style="color: Blue;">screenWindow</span><span style="color: Gray;">.</span><span style="color: Blue;">frame</span><span style="color: Gray;">.</span><span style="color: Blue;">size</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">[</span><span style="color: Blue;">screenWindow</span><span style="color: Gray;">.</span><span style="color: Blue;">layer</span><span style="color: Gray;"> </span><span style="color: Blue;">renderInContext</span><span style="color: Gray;">:</span><span style="color: Blue;">UIGraphicsGetCurrentContext</span><span style="color: Olive;">()]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIImage</span><span style="color: Gray;"> *</span><span style="color: Blue;">viewImage</span><span style="color: Gray;"> = </span><span style="color: Blue;">UIGraphicsGetImageFromCurrentImageContext</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIGraphicsEndImageContext</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIImageWriteToSavedPhotosAlbum</span><span style="color: Olive;">(</span><span style="color: Blue;">viewImage</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>以上2种方法真机和模拟器都可以运行.在photo.app里可以看到照片</p>
<p><strong>苹果最新开放的接口函数(全屏截图),已经有人试过了,不会reject:</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">CGImageRef</span><span style="color: Gray;"> </span><span style="color: Blue;">UIGetScreenImage</span><span style="color: Olive;">()</span><span style="color: Gray;">; <br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">CGImageRef</span><span style="color: Gray;"> </span><span style="color: Blue;">img</span><span style="color: Gray;"> = </span><span style="color: Blue;">UIGetScreenImage</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIImage</span><span style="color: Gray;">* </span><span style="color: Blue;">scImage</span><span style="color: Gray;">=</span><span style="color: Olive;">[</span><span style="color: Blue;">UIImage</span><span style="color: Gray;"> </span><span style="color: Blue;">imageWithCGImage</span><span style="color: Gray;">:</span><span style="color: Blue;">img</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">UIImageWriteToSavedPhotosAlbum</span><span style="color: Olive;">(</span><span style="color: Blue;">scImage</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Gray;">, </span><span style="color: Blue;">nil</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>It still works,but only on-device (not in simulator) .</p>
<p><strong>截图另存为指定名字:</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">UIWindow</span><span style="color: Gray;"> *</span><span style="color: Blue;">screenWindow</span><span style="color: Gray;"> = </span><span style="color: Olive;">[[</span><span style="color: Blue;">UIApplication</span><span style="color: Gray;"> </span><span style="color: Blue;">sharedApplication</span><span style="color: Olive;">]</span><span style="color: Gray;"> </span><span style="color: Blue;">keyWindow</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Blue;">UIGraphicsBeginImageContext</span><span style="color: Olive;">(</span><span style="color: Blue;">screenWindow</span><span style="color: Gray;">.</span><span style="color: Blue;">frame</span><span style="color: Gray;">.</span><span style="color: Blue;">size</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">[</span><span style="color: Blue;">screenWindow</span><span style="color: Gray;">.</span><span style="color: Blue;">layer</span><span style="color: Gray;"> </span><span style="color: Blue;">renderInContext</span><span style="color: Gray;">:</span><span style="color: Blue;">UIGraphicsGetCurrentContext</span><span style="color: Olive;">()]</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">UIImage</span><span style="color: Gray;"> *</span><span style="color: Blue;">screenshot</span><span style="color: Gray;"> = </span><span style="color: Blue;">UIGraphicsGetImageFromCurrentImageContext</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">UIGraphicsEndImageContext</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Blue;">NSData</span><span style="color: Gray;"> *</span><span style="color: Blue;">screenshotPNG</span><span style="color: Gray;"> = </span><span style="color: Blue;">UIImagePNGRepresentation</span><span style="color: Olive;">(</span><span style="color: Blue;">screenshot</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Blue;">NSArray</span><span style="color: Gray;"> *</span><span style="color: Blue;">paths</span><span style="color: Gray;"> = </span><span style="color: Blue;">NSSearchPathForDirectoriesInDomains</span><span style="color: Olive;">(</span><span style="color: Blue;">NSDocumentDirectory</span><span style="color: Gray;">, </span><span style="color: Blue;">NSUserDomainMask</span><span style="color: Gray;">, </span><span style="color: Blue;">YES</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">NSString</span><span style="color: Gray;"> *</span><span style="color: Blue;">documentsDirectory</span><span style="color: Gray;"> = </span><span style="color: Olive;">[</span><span style="color: Blue;">paths</span><span style="color: Gray;"> </span><span style="color: Blue;">objectAtIndex</span><span style="color: Gray;">:</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Blue;">NSError</span><span style="color: Gray;"> *</span><span style="color: Blue;">error</span><span style="color: Gray;"> = </span><span style="color: Blue;">nil</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">[</span><span style="color: Blue;">screenshotPNG</span><span style="color: Gray;"> </span><span style="color: Blue;">writeToFile</span><span style="color: Gray;">:</span><span style="color: Olive;">[</span><span style="color: Blue;">documentsDirectory</span><span style="color: Gray;"> </span><span style="color: Blue;">stringByAppendingPathComponent</span><span style="color: Gray;">:@</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">screenshot.png</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">]</span><span style="color: Gray;"> </span><span style="color: Blue;">options</span><span style="color: Gray;">:</span><span style="color: Blue;">NSAtomicWrite</span><span style="color: Gray;"> </span><span style="color: Blue;">error</span><span style="color: Gray;">:&amp;</span><span style="color: Blue;">error</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></div></div>
<p>部分代码来自:http://stackoverflow.com/questions/692464/emailing-full-screen-of-iphone-app</p>
<p>没有ipad真机截图发布app的可以用此方法做个透明按钮点,哈哈.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/iphone-ipad-screenshot-methods/feed/</wfw:commentRss>
		<slash:comments>1342</slash:comments>
		</item>
		<item>
		<title>JavaEye类似News&amp;&amp;twitter应用程序开发心得总结</title>
		<link>http://www.ieliwb.com/javaeye-iphone-news-twitter-dev/</link>
		<comments>http://www.ieliwb.com/javaeye-iphone-news-twitter-dev/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 16:23:19 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[iPhone/Mac/ObjectC]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javaeye]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/javaeye%e7%b1%bb%e4%bc%bcnewstwitter%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91%e5%bf%83%e5%be%97%e6%80%bb%e7%bb%93/</guid>
		<description><![CDATA[<blockquote><p>
最近2周在公司做JavaEye iPhone客户端,所有功能基本接近尾声了.(有些地方内存释放还存在问题.纠结阿.)<br />
第一次开发这样的全方位的应用,还是遇到很多问题的.所以这2周时间基本全面投入了(累并快乐着).
</p></blockquote>
<blockquote><p>JavaEye的客户端包含4个大的模块,新闻,闲聊,短信,收藏等.</p></blockquote>
<blockquote><p>
<img src="http://www.ieliwb.com/u/img/javaeye_client_news.png" alt="" /><br />
A:新闻直[......]</p></blockquote><p class='read-more'><a href='http://www.ieliwb.com/javaeye-iphone-news-twitter-dev/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<blockquote><p>
最近2周在公司做JavaEye iPhone客户端,所有功能基本接近尾声了.(有些地方内存释放还存在问题.纠结阿.)<br />
第一次开发这样的全方位的应用,还是遇到很多问题的.所以这2周时间基本全面投入了(累并快乐着).
</p></blockquote>
<blockquote><p>JavaEye的客户端包含4个大的模块,新闻,闲聊,短信,收藏等.</p></blockquote>
<blockquote><p>
<img src="http://www.ieliwb.com/u/img/javaeye_client_news.png" alt="" /><br />
A:新闻直接解析XML源数据,这个公司没有要求,自己额外加的,SQLite保存,可以离线阅读,新闻可以直接推送到闲聊和收藏.WebKit浏览器功能.</p></blockquote>
<blockquote><p>
<img src="http://www.ieliwb.com/u/img/javaeye_client_chat.png" alt="" /><br />
B:主要是闲聊,这个类似twitter的功能确实耗费了我不少时间,主要是气泡式显示,下拉刷新,大量用户小图标加载问题,分页处理.大部分时间都在处理这块,稍有不慎,内存就爆了或程序卡的动不了.</p></blockquote>
<blockquote><p><img src="http://www.ieliwb.com/u/img/javaeye_client_msg.png" alt="" /><br />
C:短信功能和闲聊差不多,时间不多,就2周懒的搞iphone短信那样的对话显示了</p></blockquote>
<blockquote><p>
<img src="http://www.ieliwb.com/u/img/javaeye_client_links.png" alt="" /><br />
D:收藏,主要是Webkit网页加载,没什么</p></blockquote>
<p><strong>总结应用程序开发心得,完成的功能如下:</strong></p>
<blockquote><p>
1.登录及获取信息认证,HTTP Basic  Access Authentication。<br />
2.成功登录后用户密码保存安全问题 keychain<br />
3.数据解析问题.base64,json,xml<br />
4.动画进度提示效果HUD<br />
5.SQLite离线数据保存获取<br />
6.下拉后松开刷新效果<br />
7.用户闲聊列表小图片加载问题(异步+多线程+缓存)<br />
8.闲聊内容气泡试显示(高度自适应)<br />
9.闲聊分页解决方案(SQLite只保存最新的30条记录,其他的按需动态加载add,类似新浪微薄的加载方式)
</p></blockquote>
<p>稍后献上部分代码和用到的公共库地址.</p>
<p>感谢CocoaChina &#038;&#038; Google !! 一个人的团队没有他们真不知道怎么办好,哈哈.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/javaeye-iphone-news-twitter-dev/feed/</wfw:commentRss>
		<slash:comments>1168</slash:comments>
		</item>
		<item>
		<title>取iphone本机ip地址方法(非调用私有api方法)</title>
		<link>http://www.ieliwb.com/get-iphone-ip-address-api/</link>
		<comments>http://www.ieliwb.com/get-iphone-ip-address-api/#comments</comments>
		<pubDate>Sun, 09 May 2010 04:20:43 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[iPhone/Mac/ObjectC]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/%e5%8f%96iphone%e6%9c%ac%e6%9c%baip%e5%9c%b0%e5%9d%80%e6%96%b9%e6%b3%95%e9%9d%9e%e8%b0%83%e7%94%a8%e7%a7%81%e6%9c%89api%e6%96%b9%e6%b3%95/</guid>
		<description><![CDATA[<p>手头一个iphone项目需要取iphone本机ip地址,在iphone os 2.0上可以用下面的方法获得:</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">-</span><span style="color: Olive;">(</span><span style="color: Blue;">NSString</span><span style="color: Gray;">*</span><span style="color: Olive;">)</span><span style="color: Blue;">getAddress</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">iphone_ip</span><span style="color: Olive;">[</span><span style="color: Maroon;">255</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">iphone_ip</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&#34;</span><span style="color: Red;">127.0.0.1</span><span style="color: #8b0000;">&#34;</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// if ever[......]</span></div></div><p class='read-more'><a href='http://www.ieliwb.com/get-iphone-ip-address-api/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>手头一个iphone项目需要取iphone本机ip地址,在iphone os 2.0上可以用下面的方法获得:</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">-</span><span style="color: Olive;">(</span><span style="color: Blue;">NSString</span><span style="color: Gray;">*</span><span style="color: Olive;">)</span><span style="color: Blue;">getAddress</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">iphone_ip</span><span style="color: Olive;">[</span><span style="color: Maroon;">255</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">iphone_ip</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">127.0.0.1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// if everything fails</span><span style="color: Gray;"><br /></span><span style="color: Blue;">NSHost</span><span style="color: Gray;">* </span><span style="color: Blue;">myhost</span><span style="color: Gray;"> = </span><span style="color: Olive;">[</span><span style="color: Blue;">NSHost</span><span style="color: Gray;"> </span><span style="color: Blue;">currentHost</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">myhost</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">NSString</span><span style="color: Gray;"> *</span><span style="color: Blue;">ad</span><span style="color: Gray;"> = </span><span style="color: Olive;">[</span><span style="color: Blue;">myhost</span><span style="color: Gray;"> </span><span style="color: Blue;">address</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ad</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">iphone_ip</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: Blue;">ad</span><span style="color: Gray;"> </span><span style="color: Blue;">cStringUsingEncoding</span><span style="color: Gray;">: </span><span style="color: Blue;">NSISOLatin1StringEncoding</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: Blue;">NSString</span><span style="color: Gray;"> </span><span style="color: Blue;">stringWithFormat</span><span style="color: Gray;">:@</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%s</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">iphone_ip</span><span style="color: Olive;">]</span><span style="color: Gray;">; <br /></span><span style="color: Olive;">}</span></div></div>
<p>到3.0这个方法成了苹果私有api了,用了不对不说,error:</p>
<blockquote><p>warning: no &#8216;+currentHost&#8217; method found<br />
warning: (Messages without a matching method signature)
</p></blockquote>
<p>,提交的app还被reject:</p>
<blockquote><p>
[NSHost currentHost] will also work, but it is deprecated and considered a &#8220;Private API&#8221; by Apple, so you won&#8217;t be able to submit your application to App Store.
</p></blockquote>
<p>google很久无果;</p>
<p>今天无意发现一个老外的blog贴了方法,试用了下完全OK,要翻墙看,转载记录一下.</p>
<blockquote><p>As far as I know there is only one hacky way to do that. You basically open a socket and get its address using POSIX functions. Here is the code I used for this:
</p></blockquote>
<div class="hl-surround"><div class="hl-main"><span class="hl-mlcomment">/*<br />&nbsp;*&nbsp; IPAdress.h<br />&nbsp;*<br />&nbsp;*<br />&nbsp;*/</span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-prepro">#define</span><span style="color: Gray;"> </span><span style="color: Blue;">MAXADDRS</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Maroon;">32</span><span class="hl-prepro"></span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-types">extern</span><span style="color: Gray;"> </span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span class="hl-types">extern</span><span style="color: Gray;"> </span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span class="hl-types">extern</span><span style="color: Gray;"> </span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span class="hl-types">extern</span><span style="color: Gray;"> </span><span class="hl-types">unsigned</span><span style="color: Gray;"> </span><span class="hl-types">long</span><span style="color: Gray;"> </span><span style="color: Blue;">ip_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #ffa500;">// Function prototypes</span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">InitAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">FreeAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">GetIPAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">GetHWAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;<br /></span><span class="hl-mlcomment">/*<br />&nbsp;*&nbsp; IPAddress.c<br />&nbsp;*<br />&nbsp;*/</span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">IPAddress.h</span><span style="color: #8b0000;">&quot;</span><span class="hl-prepro"></span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">stdio.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">stdlib.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">string.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">unistd.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">sys/ioctl.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">sys/types.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">sys/socket.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">netinet/in.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">netdb.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">arpa/inet.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">sys/sockio.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">net/if.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">errno.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">net/if_dl.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br />&nbsp; <br /></span><span class="hl-prepro">#define</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">min</span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">((</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt; </span><span style="color: Olive;">(</span><span style="color: Blue;">b</span><span style="color: Olive;">)</span><span style="color: Gray;"> ? </span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> : </span><span style="color: Olive;">(</span><span style="color: Blue;">b</span><span style="color: Olive;">))</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#define</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">max</span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">((</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> &gt; </span><span style="color: Olive;">(</span><span style="color: Blue;">b</span><span style="color: Olive;">)</span><span style="color: Gray;"> ? </span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> : </span><span style="color: Olive;">(</span><span style="color: Blue;">b</span><span style="color: Olive;">))</span><span class="hl-prepro"></span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-prepro">#define</span><span style="color: Gray;"> </span><span style="color: Blue;">BUFFERSIZE</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Maroon;">4000</span><span class="hl-prepro"></span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span class="hl-types">unsigned</span><span style="color: Gray;"> </span><span class="hl-types">long</span><span style="color: Gray;"> </span><span style="color: Blue;">ip_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">MAXADDRS</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp; &nbsp;</span><span style="color: Blue;">nextAddr</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">InitAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">MAXADDRS</span><span style="color: Gray;">; ++</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ip_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">FreeAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">MAXADDRS</span><span style="color: Gray;">; ++</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> != </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">free</span><span style="color: Olive;">(</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> != </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">free</span><span style="color: Olive;">(</span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> != </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">free</span><span style="color: Olive;">(</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ip_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">InitAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">GetIPAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">, </span><span style="color: Blue;">len</span><span style="color: Gray;">, </span><span style="color: Blue;">flags</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">char</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">buffer</span><span style="color: Olive;">[</span><span style="color: Blue;">BUFFERSIZE</span><span style="color: Olive;">]</span><span style="color: Gray;">, *</span><span style="color: Blue;">ptr</span><span style="color: Gray;">, </span><span style="color: Blue;">lastname</span><span style="color: Olive;">[</span><span style="color: Blue;">IFNAMSIZ</span><span style="color: Olive;">]</span><span style="color: Gray;">, *</span><span style="color: Blue;">cptr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">ifconf</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ifc</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">ifreq</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; *</span><span style="color: Blue;">ifr</span><span style="color: Gray;">, </span><span style="color: Blue;">ifrcopy</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">sockaddr_in</span><span style="color: Gray;">&nbsp; &nbsp; *</span><span style="color: Blue;">sin</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">temp</span><span style="color: Olive;">[</span><span style="color: Maroon;">80</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">sockfd</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">MAXADDRS</span><span style="color: Gray;">; ++</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ip_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">sockfd</span><span style="color: Gray;"> = </span><span style="color: Blue;">socket</span><span style="color: Olive;">(</span><span style="color: Blue;">AF_INET</span><span style="color: Gray;">, </span><span style="color: Blue;">SOCK_DGRAM</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">perror</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">socket failed</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">ifc</span><span style="color: Gray;">.</span><span style="color: Blue;">ifc_len</span><span style="color: Gray;"> = </span><span style="color: Blue;">BUFFERSIZE</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">ifc</span><span style="color: Gray;">.</span><span style="color: Blue;">ifc_buf</span><span style="color: Gray;"> = </span><span style="color: Blue;">buffer</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ioctl</span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Gray;">, </span><span style="color: Blue;">SIOCGIFCONF</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">ifc</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">perror</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ioctl error</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">lastname</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ptr</span><span style="color: Gray;"> = </span><span style="color: Blue;">buffer</span><span style="color: Gray;">; </span><span style="color: Blue;">ptr</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">buffer</span><span style="color: Gray;"> + </span><span style="color: Blue;">ifc</span><span style="color: Gray;">.</span><span style="color: Blue;">ifc_len</span><span style="color: Gray;">; </span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ifr</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">ifreq</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">ptr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">len</span><span style="color: Gray;"> = </span><span style="color: Blue;">max</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">sockaddr</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_addr</span><span style="color: Gray;">.</span><span style="color: Blue;">sa_len</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ptr</span><span style="color: Gray;"> += </span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: Blue;">len</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">// for next one in buffer</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_addr</span><span style="color: Gray;">.</span><span style="color: Blue;">sa_family</span><span style="color: Gray;"> != </span><span style="color: Blue;">AF_INET</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">continue</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">// ignore if not desired address family</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">((</span><span style="color: Blue;">cptr</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">strchr</span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Gray;">, ':'</span><span style="color: Olive;">))</span><span style="color: Gray;"> != </span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*</span><span style="color: Blue;">cptr</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// replace colon will null</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">strncmp</span><span style="color: Olive;">(</span><span style="color: Blue;">lastname</span><span style="color: Gray;">, </span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Gray;">, </span><span style="color: Blue;">IFNAMSIZ</span><span style="color: Olive;">)</span><span style="color: Gray;"> == </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">continue</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span class="hl-mlcomment">/* already processed this interface */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">memcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">lastname</span><span style="color: Gray;">, </span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Gray;">, </span><span style="color: Blue;">IFNAMSIZ</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ifrcopy</span><span style="color: Gray;"> = *</span><span style="color: Blue;">ifr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ioctl</span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Gray;">, </span><span style="color: Blue;">SIOCGIFFLAGS</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">ifrcopy</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">flags</span><span style="color: Gray;"> = </span><span style="color: Blue;">ifrcopy</span><span style="color: Gray;">.</span><span style="color: Blue;">ifr_flags</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">((</span><span style="color: Blue;">flags</span><span style="color: Gray;"> &amp; </span><span style="color: Blue;">IFF_UP</span><span style="color: Olive;">)</span><span style="color: Gray;"> == </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">continue</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">// ignore if interface not up</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">nextAddr</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">nextAddr</span><span style="color: Olive;">]</span><span style="color: Gray;"> == </span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">nextAddr</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">sin</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">sockaddr_in</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_addr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">temp</span><span style="color: Gray;">, </span><span style="color: Blue;">inet_ntoa</span><span style="color: Olive;">(</span><span style="color: Blue;">sin</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">sin_addr</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">nextAddr</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: Blue;">temp</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">nextAddr</span><span style="color: Olive;">]</span><span style="color: Gray;"> == </span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Blue;">nextAddr</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">temp</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ip_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">nextAddr</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">sin</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">sin_addr</span><span style="color: Gray;">.</span><span style="color: Blue;">s_addr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;++</span><span style="color: Blue;">nextAddr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">close</span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">GetHWAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">ifconf</span><span style="color: Gray;"> </span><span style="color: Blue;">ifc</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">ifreq</span><span style="color: Gray;"> *</span><span style="color: Blue;">ifr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">, </span><span style="color: Blue;">sockfd</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">buffer</span><span style="color: Olive;">[</span><span style="color: Blue;">BUFFERSIZE</span><span style="color: Olive;">]</span><span style="color: Gray;">, *</span><span style="color: Blue;">cp</span><span style="color: Gray;">, *</span><span style="color: Blue;">cplim</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">temp</span><span style="color: Olive;">[</span><span style="color: Maroon;">80</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">MAXADDRS</span><span style="color: Gray;">; ++</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">sockfd</span><span style="color: Gray;"> = </span><span style="color: Blue;">socket</span><span style="color: Olive;">(</span><span style="color: Blue;">AF_INET</span><span style="color: Gray;">, </span><span style="color: Blue;">SOCK_DGRAM</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">perror</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">socket failed</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">ifc</span><span style="color: Gray;">.</span><span style="color: Blue;">ifc_len</span><span style="color: Gray;"> = </span><span style="color: Blue;">BUFFERSIZE</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">ifc</span><span style="color: Gray;">.</span><span style="color: Blue;">ifc_buf</span><span style="color: Gray;"> = </span><span style="color: Blue;">buffer</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ioctl</span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Gray;">, </span><span style="color: Blue;">SIOCGIFCONF</span><span style="color: Gray;">, </span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">ifc</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">perror</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ioctl error</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">close</span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">ifr</span><span style="color: Gray;"> = </span><span style="color: Blue;">ifc</span><span style="color: Gray;">.</span><span style="color: Blue;">ifc_req</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">cplim</span><span style="color: Gray;"> = </span><span style="color: Blue;">buffer</span><span style="color: Gray;"> + </span><span style="color: Blue;">ifc</span><span style="color: Gray;">.</span><span style="color: Blue;">ifc_len</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">cp</span><span style="color: Gray;">=</span><span style="color: Blue;">buffer</span><span style="color: Gray;">; </span><span style="color: Blue;">cp</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">cplim</span><span style="color: Gray;">; </span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">ifr</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">ifreq</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">cp</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_addr</span><span style="color: Gray;">.</span><span style="color: Blue;">sa_family</span><span style="color: Gray;"> == </span><span style="color: Blue;">AF_LINK</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">sockaddr_dl</span><span style="color: Gray;"> *</span><span style="color: Blue;">sdl</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">struct</span><span style="color: Gray;"> </span><span style="color: Blue;">sockaddr_dl</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_addr</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">,</span><span style="color: Blue;">c</span><span style="color: Gray;">,</span><span style="color: Blue;">d</span><span style="color: Gray;">,</span><span style="color: Blue;">e</span><span style="color: Gray;">,</span><span style="color: Blue;">f</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">temp</span><span style="color: Gray;">, </span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">ether_ntoa</span><span style="color: Olive;">(</span><span style="color: Blue;">LLADDR</span><span style="color: Olive;">(</span><span style="color: Blue;">sdl</span><span style="color: Olive;">)))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">sscanf</span><span style="color: Olive;">(</span><span style="color: Blue;">temp</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%x:%x:%x:%x:%x:%x</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">a</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">b</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">c</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">d</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">e</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">f</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">sprintf</span><span style="color: Olive;">(</span><span style="color: Blue;">temp</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%02X:%02X:%02X:%02X:%02X:%02X</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">a</span><span style="color: Gray;">,</span><span style="color: Blue;">b</span><span style="color: Gray;">,</span><span style="color: Blue;">c</span><span style="color: Gray;">,</span><span style="color: Blue;">d</span><span style="color: Gray;">,</span><span style="color: Blue;">e</span><span style="color: Gray;">,</span><span style="color: Blue;">f</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">MAXADDRS</span><span style="color: Gray;">; ++</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">((</span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> != </span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Olive;">(</span><span style="color: Blue;">strcmp</span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Gray;">, </span><span style="color: Blue;">if_names</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;"> == </span><span style="color: Maroon;">0</span><span style="color: Olive;">))</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> == </span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: Blue;">temp</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">hw_addrs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">temp</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">break</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">cp</span><span style="color: Gray;"> += </span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_name</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: Blue;">max</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_addr</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Blue;">ifr</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">ifr_addr</span><span style="color: Gray;">.</span><span style="color: Blue;">sa_len</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">close</span><span style="color: Olive;">(</span><span style="color: Blue;">sockfd</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span></div></div>
<p>test:</p>
<div class="hl-surround"><div class="hl-main"><span class="hl-prepro">#import</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">IPAdress.h</span><span style="color: #8b0000;">&quot;</span><span class="hl-prepro"></span><span style="color: Gray;"><br />..........<br />- </span><span style="color: Olive;">(</span><span style="color: Blue;">NSString</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">deviceIPAdress</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">InitAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">GetIPAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">GetHWAddresses</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: Blue;">NSString</span><span style="color: Gray;"> </span><span style="color: Blue;">stringWithFormat</span><span style="color: Gray;">:@</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%s</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Blue;">ip_names</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]]</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br />- </span><span style="color: Olive;">(</span><span class="hl-types">void</span><span style="color: Olive;">)</span><span style="color: Blue;">viewDidLoad</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">[</span><span style="color: Blue;">super</span><span style="color: Gray;"> </span><span style="color: Blue;">viewDidLoad</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">NSString</span><span style="color: Gray;">* </span><span style="color: Blue;">ip_iphone</span><span style="color: Gray;"> = </span><span style="color: Olive;">[</span><span style="color: Blue;">self</span><span style="color: Gray;"> </span><span style="color: Blue;">deviceIPAdress</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; </span><span style="color: Blue;">NSLog</span><span style="color: Olive;">(</span><span style="color: Gray;">@</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ip:%@</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">ip_iphone</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span></div></div>
<p> 原代码地址(需翻墙):http://iphonesdksnippets.com/post/2009/09/07/Get-IP-address-of-iPhone.aspx</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/get-iphone-ip-address-api/feed/</wfw:commentRss>
		<slash:comments>998</slash:comments>
		</item>
		<item>
		<title>iui ：User Interface (UI) Framework for Safari development on iPhone</title>
		<link>http://www.ieliwb.com/iphone-ui-framework-iui/</link>
		<comments>http://www.ieliwb.com/iphone-ui-framework-iui/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 09:27:18 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[Js/Css/Html/Xml]]></category>
		<category><![CDATA[iPhone/Mac/ObjectC]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iPhone框架]]></category>
		<category><![CDATA[iui]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/iui-%ef%bc%9auser-interface-ui-framework-for-safari-development-on-iphone/</guid>
		<description><![CDATA[<img src="http://code.google.com/p/iui/logo?logo_id=1238443620" alt="" />
<blockquote>IUI是iPhone web开发前端框架，用css，html，js打造iPhone app界面，IUI内置了很多应用，如音乐站，购物站，digg站，资讯站.....这些你都可以在IUI上找到........
</blockquote>[......]<p class='read-more'><a href='http://www.ieliwb.com/iphone-ui-framework-iui/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://code.google.com/p/iui/logo?logo_id=1238443620" alt="" /></p>
<blockquote><p>
iUI: iPhone User Interface Framework</p>
<p>iUI is a framework consisting of a JavaScript library, CSS, and images for developing iPhone webapps.</p>
<p>Makes WebApps Look and Feel Like iPhone Native Apps</p>
<p>iUI has the following features:</p>
<p>Create Navigational Menus and iPhone interfaces from standard HTML<br />
Use or knowledge of JavaScript is not required to create basic iPhone pages<br />
Ability to handle phone orientation changes<br />
Provide a more &#8220;iPhone-like&#8221; experience to Web apps (on or off the iPhone)<br />
For more information, see the <a href="http://code.google.com/p/iui/">Introduction </a>page.
</p></blockquote>
<blockquote><p>框架主页：http://code.google.com/p/iui/</p></blockquote>
<blockquote><p>IUI是iPhone web开发前端框架，用css，html，js打造iPhone app界面，IUI内置了很多应用，如音乐站，购物站，digg站，资讯站&#8230;..这些你都可以在IUI上找到&#8230;&#8230;..
</p></blockquote>
<p><strong>测试截图：</strong><br />
<img src="http://www.ieliwb.com/u/img/iui-theaters.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/iui-digg.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/iui-setting.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/iui-music.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/iui-ticket.jpg" alt="" /><br />
相信上面是WEB界面吗？试试IUI吧。</p>
<p>关于iPhone web开发可以参考：<br />
<a href="http://www.ieliwb.com/aptana-iphone-web-development/">使用 Aptana 的 iPhone Development 插件开发 iPhone Web 应用程序</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/iphone-ui-framework-iui/feed/</wfw:commentRss>
		<slash:comments>1324</slash:comments>
		</item>
		<item>
		<title>使用 Aptana 的 iPhone Development 插件开发 iPhone Web 应用程序</title>
		<link>http://www.ieliwb.com/aptana-iphone-web-development/</link>
		<comments>http://www.ieliwb.com/aptana-iphone-web-development/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 08:14:40 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[Js/Css/Html/Xml]]></category>
		<category><![CDATA[iPhone/Mac/ObjectC]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/%e4%bd%bf%e7%94%a8-aptana-%e7%9a%84-iphone-development-%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91-iphone-web-%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f/</guid>
		<description><![CDATA[<img src="http://www.ieliwb.com/u/img/fingermouse.jpg" alt="" />
<blockquote>Apple 的 iPhone 平台为开发人员提供了一个有趣的机会。借助其小型的交互式触摸屏，iPhone 和 iPod Touch 在很短的时间内迅速吸引了数百万用户。但是这种新颖的设计和专利平台给应用程序开发人员带来了一系列新的挑战。幸运的是，使用一系列新的开源工具可以更轻松地完成这项工作。Aptana 的针对 Eclipse 的 iPhone Development 插件可以生成特定于 iPhone 的项目，并在可旋转取景器中预览应用程序。</blockquote>
<blockquote>官方网站：http://www.aptana.org/</blockquote>[......]<p class='read-more'><a href='http://www.ieliwb.com/aptana-iphone-web-development/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Apple 的 iPhone 平台为开发人员提供了一个有趣的机会。借助其小型的交互式触摸屏，iPhone 和 iPod Touch 在很短的时间内迅速吸引了数百万用户。但是这种新颖的设计和专利平台给应用程序开发人员带来了一系列新的挑战。幸运的是，使用一系列新的开源工具可以更轻松地完成这项工作。Aptana 的针对 Eclipse 的 iPhone Development 插件可以生成特定于 iPhone 的项目，并在可旋转取景器中预览应用程序。</p></blockquote>
<blockquote><p>官方网站：http://www.aptana.org/</p></blockquote>
<p><img src="http://www.ieliwb.com/u/img/fingermouse.jpg" alt="" /></p>
<blockquote><p>在开始设计iPhone浏览界面 之前，一定要先了解 iPhone 开发与普通 Web 开发的不同之处。来自 Apple 的 iPhone Dev Center（请参阅 参考资料）(上图)，很好地总结了两者的不同之处：手指不是鼠标。这样做得不到桌面应用程序中的像素精度，但是通过轻敲、轻弹和轻压将开启一个丰富的新用户交互模型。此外，iPhone 与用户一起移动并且通常用于有干扰的环境中，因此应用程序需要能够快速容易地访问目标信息。</p></blockquote>
<blockquote><p>这里可以参考我以前写过的一篇文章：<a href="http://www.ieliwb.com/myiphones-iphone-site/">http://www.ieliwb.com/myiphones-iphone-site/</a></p></blockquote>
<p><strong>安装 Aptana Studio, 及iphone开发插件：</strong></p>
<blockquote><p>首先安装Aptana Studio V2.0.2，完成后在 Aptana Studio V2.0.2中，选择 Help > Software Updates > Find and Install。<br />
选择 Search for new features to install。此窗口列出了可以从中下载插件的站点以及 Eclipse 预定义的插件。<br />
单击 New Remote Site 将 iphone插件 添加到此列表中，并使用 URL http://update1.aptana.org/iphone/3.2/  对其进行定义。<br />
从列表中选择新定义的 Aptana 站点，单击 Next，然后安装所有可用功能。完成此窗口安装基本的 Aptana Editor。<br />
重新启动 Aptana Studio。新建一个项目就可以看到有iPhone web development的选项了。</p></blockquote>
<p><img src="http://www.ieliwb.com/u/img/aptana_install_step_1.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/aptana_install_step_2.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/aptana_install_step_3.jpg" alt="" /></p>
<p>详细步骤就不写了（英文原文：http://update1.aptana.org/iphone/3.2/index.html），一路点下去就可以，注意打勾和不打勾的。</p>
<p><strong>调试界面：</strong></p>
<blockquote><p>注意由 Aptana 的基本编辑器提供的突出显示的语法，它支持 HTML、CSS 和 JavaScript。<br />
在文本编辑器的底部，您将看到 Source、iPhone 、IE等 选项卡，可以自己添加浏览器模式，建议安装Safari浏览器并设为默认浏览器，这样你调试的页面基本和iPhone上浏览的一摸一样，我这是用默认的IE调试有点错位，单击 iPhone Preview 查看示例应用程序在 iPhone 中的外观。在浏览器外部单击可以旋转电话，单击电话标题栏可以隐藏导航栏。</p></blockquote>
<p><img src="http://www.ieliwb.com/u/img/aptana_install_step_4.jpg" alt="" /><br />
<img src="http://www.ieliwb.com/u/img/aptana_install_step_5.jpg" alt="" /></p>
<blockquote><p>使用 iPhone Preview 模式可以节省大量时间：可以快速测试新设计想法并重复进行开发而无需离开计算机。</p></blockquote>
<blockquote><p>习惯于Eclipse开发的可以使用Aptana 的Eclipse插件来开发也可以，可以参考：<a href="http://www.ibm.com/developerworks/cn/opensource/os-eclipse-iphone/#main">IBM</a></p></blockquote>
<p><strong>最后推荐一个开源UI框架iUi：</strong></p>
<blockquote><p>User Interface (UI) Framework for Safari development on iPhone<br />
地址：http://code.google.com/p/iui/</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/aptana-iphone-web-development/feed/</wfw:commentRss>
		<slash:comments>153</slash:comments>
		</item>
		<item>
		<title>国外破解苹果app store软件游戏方法</title>
		<link>http://www.ieliwb.com/iphone-appcrack-v8/</link>
		<comments>http://www.ieliwb.com/iphone-appcrack-v8/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 04:59:16 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[iPhone/Mac/ObjectC]]></category>
		<category><![CDATA[ipa]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[破解]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/%e5%9b%bd%e5%a4%96%e7%a0%b4%e8%a7%a3%e8%8b%b9%e6%9e%9capp-store%e8%bd%af%e4%bb%b6%e6%b8%b8%e6%88%8f%e6%96%b9%e6%b3%95/</guid>
		<description><![CDATA[<p><strong>安装步骤：</strong><br />
1. 下载AppCrack （地址：http://sharebee.com/4494aac3），解压<br />
2. SSH 到 iPhone（推荐用WinSCP），进入目录/usr/bin/, 把AppCrack带目录拷进去<br />
3. 修改AppCrack权限为777<br />
4. 从Cydia上安装软件&#038;[......]</p><p class='read-more'><a href='http://www.ieliwb.com/iphone-appcrack-v8/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>安装步骤：</strong><br />
1. 下载AppCrack （地址：http://sharebee.com/4494aac3），解压<br />
2. SSH 到 iPhone（推荐用WinSCP），进入目录/usr/bin/, 把AppCrack带目录拷进去<br />
3. 修改AppCrack权限为777<br />
4. 从Cydia上安装软件&#8221;APT 0.6 Transitional&#8221;</p>
<p>到这里为止准备工作完毕，准备破解IPA</p>
<p>1. 用Terminal模式SSH 到iPhone（推荐用WinSCP或者Putty）<br />
2. 按下面的格式敲入命令行，AppCrack &#8220;程序名字&#8221; &#8220;破解人姓名&#8221;<br />
<code>AppCrack "Application Name" "Cracker Name"</code><br />
3. 等软件运行完，从/var/root/Cracked上拷出破解后的IPA</p>
<p><strong>一些注意事项：</strong><br />
1. 命令行里的 &#8220;程序名字&#8221; 不是你iPhone上看到的图标下的名字，是.app文件的名字。<br />
一个简单的办法是把IPA文件改名成zip，用 winzip / winrar 打开，进入Payload目录后的那个子目录名字就是 &#8220;程序名字&#8221;<br />
2. 命令行里的 &#8220;破解人姓名&#8221;一定不能为空</p>
<p>英文原文：<br />
I am releasing this as a command line (through MobileTerminal or preferrably SSH) alternative to Crackulous on 3.0 until it is fixed.</p>
<p>Once again, many thanks to Flox, SaladFork, Flawless, FloydianSlip, puy0, TraderTic, and tripleked.</p>
<p>ATTENTION: AppCrack has been updated on August 26, 2009! The download archive should be AppCrackV8.zip; that is the latest version! New features include the ability to dump apps like AIM and more stabliity and bug fixes!. Cracked apps are now located in /var/mobile/Cracked. The ps command is now a dependency!</p>
<p>ATTENTION: AppCrack Personal has been deprecated. There&#8217;s too much redundancy (thanks for pointing that out SaladFork) and is a pain in the ass to handle. If you want personal, modify it yourself.</p>
<p>To Install:</p>
<p>1. Download and unzip AppCrack V8 from here: http://sharebee.com/7deb35a8</p>
<p>3. SSH AppCrack into the /usr/bin/ folder of your iPhone or iPod Touch.</p>
<p>4. Change Permissions to 777 (chmod 777 AppCrack) so you can run it.</p>
<p>5. Go into Cydia and install &#8220;APT 0.6 Transitional&#8221;</p>
<p>To Crack an App:</p>
<p>1. SSH into your device using Terminal on Mac or WinSCP/Putty on Windows.</p>
<p>2a. To crack with a cracker name, type in with quotes:<br />
Code:</p>
<p>AppCrack &#8220;Application Name&#8221; &#8220;Cracker Name&#8221;</p>
<p>2b. To crack without a cracker name, type in:<br />
Code:</p>
<p>AppCrack &#8220;Application Name&#8221;</p>
<p>3. Let it work and then get the IPA from the folder it tells you to go to (/var/mobile/Cracked).</p>
<p>Some Notes:</p>
<p>1. The [Application Name] is NOT the title you see below the icon on SpringBoard. It is the actual name of the .app file, please use that because it is SOMETIMES different. A good way to find this would be to use Categories, or extract the app name from the Payload folder of the IPA (but remember to omit the .app extension).</p>
<p>2. If there is a dependency (which includes Erica Utilities, Darwin CC Tools, and GNU Debugger/gdb, Link Identity Editor, Core Utilities, gawk, SQLite and libraries, ps, and zip) that is not installed, AppCrack will use the terminal version of APT to install it right in the same window. If the install is successful, retry cracking the app. If not, install it from Cydia, or go into Cydia and install APT 0.7 Strict or something like that.</p>
<p>3. If you try to crack an already cracked app or a beta, AppCrack will fail.</p>
<p>4. Once again, this is intended to be a substitue for all the crackers on 3.0 who cannot use Crackulous to crack apps.</p>
<p>Enjoy! </p>
<p>原贴请见： http://hackulo.us/forums/index.php?showtopic=29262</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/iphone-appcrack-v8/feed/</wfw:commentRss>
		<slash:comments>1121</slash:comments>
		</item>
	</channel>
</rss>

