Does hosts file exist on the iPhone? How to change it? [closed]
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this questionI am developing an application that query to the server. In my Mac, I use the hosts file to change the dns to point to a local server within my local area network.
Now I need to test it with my iPhone, the problem is that my iPhone does not recognize that server due to the missing configuration for dns.
On my Mac or Windows, I simply add: 192.168.0.20 http://www.google.com
to the hosts file.
Now how do I let my iPhone know the URL: http开发者_如何学C://www.google.com
?
Another option here is to have your iPhone connect via a proxy. Here's an example of how to do it with Fiddler (it's very easy):
http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html
In that case any dns lookups your iPhone does will use the hosts file of the machine Fiddler is running on. Note, though, that you must use a name that will be resolved via DNS. example.local
, for instance, will not work. example.xyz
or example.dev
will.
This doesn't directly answer your question, but it does solve your problem...
What make of router do you have? Your router firmware may allow you to set DNS records for your local network. This is what I do with the Tomato firmware
Not programming related, but I'll answer anyway. It's in /etc/hosts
.
You can change it with a simple text editor such as nano
.
(Obviously you would need a jailbroken iphone for this)
I just edited my iPhone's 'hosts' file successfully (on Jailbroken iOS 4.0).
- Installed OpenSSH onto iPhone via Cydia
- Using a SFTP client like FileZilla on my computer, I connected to my iPhone
- Address: [use your phone's IP address or hostname, eg.
simophone.local
] - Username:
root
- Password:
alpine
- Address: [use your phone's IP address or hostname, eg.
- Located the
/etc/hosts
file - Made a backup on my computer (in case I want to revert my changes later)
- Edited the hosts file in a decent text editor (such as Notepad++). See here for an explanation of the hosts file.
- Uploaded the changes, overwriting the hosts file on the iPhone
The phone does cache some webpages and DNS queries, so a reboot or clearing the cache may help. Hope that helps someone.
Simon.
It might exist, but you cannot change it on a non-jailbreaked iPhone.
Assuming that your development webserver is on a Mac, why don't you simply use its Bonjour name (e.g. MyMac.local.
) instead of myrealwebserverontheinternet.com
?
Don't change the DNS on the phone. Instead, connect with wifi to the local network and you are all set.
At my office, we have internal servers with internal DNS that are not exposed to the Internet. I just connect with iPhone to the office wifi and can then access them fine.
YMMV, but instead of configuring the phone DNS, it feels to me that just setting up local internal DNS and wifi is a cleaner and easier solution.
In case anybody else falls onto this page, you can also solve this by using the Ip address in the URL request instead of the domain:
NSURL *myURL = [NSURL URLWithString:@"http://10.0.0.2/mypage.php"];
Then you specify the Host manually:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL];
[request setAllHTTPHeaderFields:[NSDictionary dictionaryWithObjectAndKeys:@"myserver",@"Host"]];
As far as the server is concerned, it will behave the exact same way as if you had used http://myserver/mypage.php
, except that the iPhone will not have to do a DNS lookup.
100% Public API.
No, an iPhone application can only change stuff within its own little sandbox. (And even there there are things that you can't change on the fly.)
Your best bet is probably to use the servers IP address rather than hostname. Slightly harder, but not that hard if you just need to resolve a single address, would be to put a DNS server on your Mac and configure your iPhone to use that.
精彩评论