代码怎么实现获取苹果手机端的c语言实现ip地址转换

主题 : 怎么通过代码获得自己的IP地址
级别: 圣骑士
UID: 374176
可可豆: 2980 CB
威望: 2532 点
在线时间: 423(时)
发自: Web Page
来源于&&分类
怎么通过代码获得自己的IP地址&&&
想做一个IOS版的通讯软件,需要上传自己的IP地址传送到服务器,请问有木有获取自己的IP地址的代码啊
级别: 新手上路
可可豆: 152 CB
威望: 151 点
在线时间: 79(时)
发自: Web Page
&&&&-(NSString*)getAddress {&&&&&&&&&&char iphone_ip[255];&&&&&&&&&&strcpy(iphone_ip,&127.0.0.1&); // if everything fails&&&&&&&&&&NSHost* myhost =[NSHost currentHost];&&&&&&&&&&if (myhost)&&&&&&&&&&{&&&&&&&&&&&&&&NSString *ad = [myhost address];&&&&&&&&&&&&&&if (ad)&&&&&&&&&&&&&&&&&&strcpy(iphone_ip,[ad cStringUsingEncoding: NSISOLatin1StringEncoding]);&&&&&&&&&&}&&&&&&&&&&return [NSString stringWithFormat:@&%s&,iphone_ip]; &&&& }
级别: 圣骑士
UID: 374176
可可豆: 2980 CB
威望: 2532 点
在线时间: 423(时)
发自: Web Page
导入包有哪些?
级别: 圣骑士
UID: 374176
可可豆: 2980 CB
威望: 2532 点
在线时间: 423(时)
发自: Web Page
回 1楼(macroideal) 的帖子
no know class method for selector &currentHost&receiver 'NSHost' for class message is a forward declaration.
级别: 新手上路
UID: 409847
可可豆: 107 CB
威望: 98 点
在线时间: 13(时)
发自: Web Page
#import &ifaddrs.h&#import &arpa/inet.h&//create by huangys-(NSString *)getIPAddress {&&&&NSString *address = @&error&;&&&&struct ifaddrs *interfaces = NULL;&&&&struct ifaddrs *temp_addr = NULL;&&&&int success = 0;&&&&// retrieve the current interfaces - returns 0 on success&&&&success = getifaddrs(&interfaces);&&&&if (success == 0) {&&&&&&&&// Loop through linked list of interfaces&&&&&&&&temp_addr =&&&&&&&&while(temp_addr != NULL) {&&&&&&&&&&&&if(temp_addr-&ifa_addr-&sa_family == AF_INET) {&&&&&&&&&&&&&&&&// Check if interface is en0 which is the wifi connection on the iPhone&&&&&&&&&&&&&&&&if([[NSString stringWithUTF8String:temp_addr-&ifa_name] isEqualToString:@&en0&]) {&&&&&&&&&&&&&&&&&&&&// Get NSString from C String&&&&&&&&&&&&&&&&&&&&address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr-&ifa_addr)-&sin_addr)];&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&&&&&temp_addr = temp_addr-&ifa_&&&&&&&&}&&&&}&&&&// Free memory&&&&freeifaddrs(interfaces);&&&&}
级别: 新手上路
可可豆: 8 CB
威望: 8 点
在线时间: 8(时)
发自: Web Page
这个论坛最烂的地方就在于这里,永远都只有人贴代码。有空去看看stackoverflow不要在这个sb地方混了。楼上跟你说的第一种方式,NSHost这个类在OSX上面是公开的,在iOS上是私有的,所以,你会报没有那个类的错误。第二种方式,其实使用SOCKET接口获取了你所有设备网络接口的信息,然后遍历筛选到了特定的网络接口信息。这个方式有一个弊端,比如你的网络状态发生改变时你不会得到通知。当然,你可以配合苹果的Reachablity,在网络变化时重新获取。希望对你有帮助。
级别: 新手上路
可可豆: 69 CB
威望: 69 点
在线时间: 120(时)
发自: Web Page
NSString *URLTmp = @&/service/getIpInfo.php?ip=myip&;&&&&NSString *URLTmp1 = [URLTmp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];&&//转码成UTF-8&&否则可能会出现错误&&&&//&&&&[URLTmp stringByAddingPercentEncodingWithAllowedCharacters:(nonnull NSCharacterSet *)]&&&&URLTmp = URLTmp1;&&&&NSURLRequest *request =&&&&[NSURLRequest requestWithURL:[NSURL URLWithString: URLTmp]];&&&&AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];&&&&[operation setCompletionBlockWithSuccess:&&&& ^(AFHTTPRequestOperation *operation, id responseObject) {&&&&&&&& NSString *requestTmp = [NSString stringWithString:operation.responseString];&&&&&&&& NSData *resData = [[NSData alloc] initWithData:[requestTmp dataUsingEncoding:NSUTF8StringEncoding]];&&&&&&&& //系统自带JSON解析&&&&&&&& NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:resData options:NSJSONReadingMutableLeaves error:nil];&&&&&&&& self.locationProvince = [[resultDic objectForKey:@&data&] objectForKey:@&region&];&&&&&&&& self.locationCity = [[resultDic objectForKey:@&data&] objectForKey:@&city&];&&&&&&&& self.locationIP = [[resultDic objectForKey:@&data&] objectForKey:@&ip&];&&&& } failure:^(AFHTTPRequestOperation *operation, NSError *error) {&&&&&&&& NSLog(@&Failure: %@&, error);&&&& }];&&&&[operation start];这些东西不都是自己平时收藏好的嘛? 去SO自己又不记,去了也没增长
UID: 123750
发帖: 1493
可可豆: 2758 CB
威望: 2710 点
在线时间: 938(时)
发自: Web Page
你在墙内,你说你怎么知道自己的公网地址? 向你处于公网的服务器发个请求,让你服务器高速你
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版var wwip=&&;
&&& $(function(){
&&&&&&& $(document).ready( function() {
&&&&&&&&&&& $.getjson( &http://smart-ip.net/geoip-json?callback=?&,
&&&&&&&&&&&&&&& function(data){
&&&&&&&&&&&&&&&&&&& alert( data.host);
&&&&&&&&&&&&&&&&&&& wwip=data.
&&&&&&&&&&&&&&& }
&&&&&&&&&&& );
&&&&&&& });
例2,js获取客户端ip地址及mac地址(转)
复制代码 代码示例:
&%@ page contenttype=&text/ charset=utf-8&%&&
&title&wmi scripting html&/title&&
&meta http-equiv=content-type content=&text/ charset=gb2312&&&
&script type=&text/javascript& src=&getipandmac.js&&&/script&&
&script language=jscript&
&&& event=&oncompleted(hresult,perrorobject, pasynccontext)& for=foo&&
&&& document.forms[0].txtmacaddr.value = unescape(macaddr);&
&&& document.forms[0].txtipaddr.value = unescape(ipaddr);&
&&& document.forms[0].txtdnsname.value = unescape(sdnsname);&
&&& //document.formbar.submit();&
&/script&&
&script language=jscript event=onobjectready(objobject,objasynccontext)&
&&& for=foo&&
&&& if (objobject.ipenabled != null && objobject.ipenabled != &undefined&&
&&&&&&&&&&& && objobject.ipenabled == true) {&
&&&&&&& if (objobject.macaddress != null && objobject.macaddress != &undefined&)&
&&&&&&&&&&& macaddr = objobject.&
&&&&&&& if (objobject.ipenabled && objobject.ipaddress(0) != null&
&&&&&&&&&&&&&&& && objobject.ipaddress(0) != &undefined&)&
&&&&&&&&&&& ipaddr = objobject.ipaddress(0);&
&&&&&&& if (objobject.dnshostname != null&
&&&&&&&&&&&&&&& && objobject.dnshostname != &undefined&)&
&&&&&&&&&&& sdnsname = objobject.&
&object id=locator classid=clsid:76a64158-cb41-11d1-8b02-b6 viewastext&&/object&&
&object id=foo classid=clsid:75718c9a-f029-11d1-a1ac-00c04fb6c223&&/object&&
&script language=jscript&&
&&& var service = locator.connectserver();&
&&& service.security_.impersonationlevel = 3;&
&&& service.instancesofasync(foo, 'win32_networkadapterconfiguration');&
&/script&&
&form id=formfoo name=formbar action=macjsp.jsp method=post&&input&
&&& value=&& name=&txtmacaddr&& &input value=&& name=&txtipaddr&&&
&input value=&& name=&txtdnsname& onclick=&getipandmacaddress()&&&/form&&
Js获取客户端IP地址与MAC地址
JS获取客户端IP地址与机器名示例&您可能感兴趣的文章:当前位置:&>&&>&&>&
js获取IP地址的三种方法
发布时间:编辑:
本文介绍下,js代码获取IP地址的三种方法,通过三个例子来了解如何在js中取得客户端的IP地址。有需要的朋友不妨作个参考。
1,js取得的方法一
复制代码 代码示例:
&script src=&/cityjson?ie=utf-8&&&/script&&
&script type=&text/&&&
document.write(returnCitySN[&cip&]+','+returnCitySN[&cname&])&
2,js取得IP地址的方法二
复制代码 代码示例:
&script language=&javascript& type=&text/javascript& src=&/ipaddress&&&
&/script&&&&
&&script&document.write(&你的IP是:&+IPData[0]+&,来自:&+IPData[2]);&
3,js取得ip地址的方法三,腾讯IP,转UTF-8:
复制代码 代码示例:
&script type=&text/javascript& src=&/ipaddress& charset=&gb2312&&&/script&
$(document).ready(function() {&
&&& $(&#ip&).val(IPData[0]);&
&&& $(&#add&).val(IPData[2]);&
与 js获取IP地址的三种方法 有关的文章
本文标题:
本页链接:
12345678910
12345678910| 漏洞检测 |
| 隐藏捆绑 |
iOS- 网络开发GET请求和POST请求实现ip地址来源查询
一、Get请求与Post请求的区别 1、Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求 2、Get是获取信息,而不是修改信息,类数据库查询功能一样,数据不会被修改 3、Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分
一、Get与Post的区别
1、Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求
2、Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改
3、Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。
4、Get传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。
5、GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。
Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。
6、Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在,对于敏感数据和不是中文字符的数据,则用,表示可能修改变服务器上的资源的请求
二、用GET方法和POST方法,应用查询ip的,效果图如下:
三、过程(本文中声称的文件均以We为前缀)
1、所需控件有4个label,其中一个label作为输出口;一个textField,作为ip地址的输入框;一个UIButton,作为动作响应按钮,关联到 WeViewController.h 中
@interface WeViewController :
UIViewController
//把接收到的数据存储到可变长度的字符串中
NSMutableString *_pMutableS
@property (retain,
nonatomic) IBOutlet
UITextField *pTextIP;
@property (retain,
nonatomic) IBOutlet
UILabel *pValueL
- (IBAction)buttonPressed:(id)
2、WeViewController.m 中,其中get方法和post方法取一即可
- (IBAction)buttonPressed:(id)sender
/*//GET请求
//获取当前textField内的ip地址
NSString *pStr = self.pTextIP.
//将其拼接成字符串
NSString *strURL = [@".cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp?theIpAddress="
stringByAppendingString:pStr];
//转换为URL
NSURL *pURL = [NSURL URLWithString:strURL];
//创建请求
NSURLRequest *pRequest = [NSURLRequest requestWithURL:pURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
//向服务器发起请求
[NSURLConnection connectionWithRequest:pRequest delegate:self];
//与Get请求的第一个区别点(不带参数,参数附件在body体里)
NSString *postStr =
@".cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp";
//转换为URL
NSURL *postURL = [NSURL
URLWithString:postStr];
//第二个区别点(请求为NSMutableURLRequest)
NSMutableURLRequest *postRequest = [NSMutableURLRequest
requestWithURL:postURL cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60];
//将参数做成一个字符串
NSString *post1 = [NSString
stringWithFormat:@"theIpAddress=%@",self.pTextIP.text];
//转换为NSData
NSData *postData = [post1
dataUsingEncoding:NSUTF8StringEncoding];
//第三个区别点(将参数作为Body体)
[postRequest
setHTTPBody:postData];
//第四点(必须手动声明当前的请求方式为POST)
[postRequest
setHTTPMethod:@"POST"];
//向服务器发送请求
[NSURLConnection
connectionWithRequest:postRequest delegate:self];
3、委托中方法实现
#pragma mark------URL delegate----
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse
*)response
NSLog(@"服务器响应");
_pMutableStr = [[NSMutableString
alloc]init];
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData
NSLog(@"接收数据");
NSString *pStr = [[NSString
alloc]initWithData:data
encoding:NSUTF8StringEncoding];
[_pMutableStr
appendString:pStr];
NSLog(@"pStr = %@",_pMutableStr);
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
NSLog(@"接收数据成功");
NSMutableString *pValue = [[NSMutableString
alloc]init];
//获取字符串中的汉字部分
for(int i =
0; i < [_pMutableStr
length]; i&#43;&#43;)
int a = [_pMutableStr
characterAtIndex:i];
if( a > 0x4e00 && a <
[pValue appendString:[_pMutableStr
substringWithRange:NSMakeRange(i,
NSLog(@"pValue = %@",pValue);
self.pValueLabel.text = pV
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError
NSLog(@"Error = %@",[error
localizedDescription]);
//收回键盘的方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
[self.view
endEditing:YES];
4、到目前为止,功能已经实现,为了美化界面可以添加以下代码,为界面添加背景图
- (void)viewDidLoad
viewDidLoad];
UIImageView *pImageView = [[UIImageView
alloc]initWithFrame:self.view.frame];
[pImageView
setImage:[UIImage
imageNamed:@"new"]];
[self.view
insertSubview:pImageView
atIndex:0];
注:web服务获取地址:
可以在上面找到xml的资源。
(责任编辑:幽灵学院)
------分隔线----------------------------
一:iOS项目开发中,需要动态返回行高自定义cell的场景可以...
在程序中如果需要监听电话状态,可以引入CoreTelephony框架...
《从零开始学Swift》学习笔记(Day 69)――Swift与Objectiv...
《从零开始学Swift》学习笔记(Day 53)――do-try-catch错...
GCD 通信操作 pragma mark - GCD 通信- (void)sendMessage{ ...
本章项目demo:https: github com zhonggaorong alipayDemo支...
工作日:9:00-21:00
周 六:9:00-18:00
&&扫一扫关注幽灵学院Java 获取手机/平板IP地址的方法
Java 获取手机/平板IP地址的方法
java是通过NetworkInterface来获取本机IP地址的信息。
Socket:一台机器的通讯节点称为socket,在java中,socket是java.net包里面的Socket,ServerSocket,DataGramSocket,MultiSocket的实例。
IP地址java中用java.net.InetAddress来表示。
InetAddress:ip地址或者域名,指向远程地址。如果域名解析不了,则出错。抽象类,有两个子类:Inet4Address和Inet6Address。这两个类智能通过InetAddress的静态方法获取,不能直接构造。包可见。
InetSocketAddress extends SocketAddress:ip socket地址,用{ip,port}或者{hostname,port}表示。也能够单独用port构造,表示本机ip地址,所有本机网络地址。
NetwordInterface:本机网络接口,由多个网络接口名称和对应的网络接口的ip地址列表构成。
网络主机有两个特殊的网络地址:loopback:127.0.0.1 用来检测本机的host名称,或者检测本地ip地址是否可用。wildcard:0.0.0.0 绑定了本机所有的ip地址。
for (Enumeration&NetworkInterface& en = NetworkInterface&&&&&&.getNetworkInterfaces(); en.hasMoreElements();) {&&&&&NetworkInterface intf = en.nextElement();&&&&&for (Enumeration&InetAddress& enumIpAddr = intf&&&&&&&.getInetAddresses(); enumIpAddr.hasMoreElements();) {&&&&&&InetAddress inetAddress = enumIpAddr.nextElement();&&&&&&if (!inetAddress.isLoopbackAddress()) {&&&&&&&if (inetAddress.isReachable(1000) && InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())) {&&&&&&&&String localIp = inetAddress.getHostAddress()&&&&&&&&&&.toString();&&&&&&&&byte[] localIpBytes = inetAddress.getAddress();&&&&&&&&app.me.ipAddress = localIp;&&&&&&&&Log.i("msg","自己ip="+localIp);&&&&&&&&System.arraycopy(localIpBytes, 0, regBuffer,&&&&&&&&&&44, 4);&&&&&&&}&&&&&&}&&&&&}&&&&}
可以看到上面的代码,是获取手机ip的核心代码。由两个for循环组成。首先第一个for循环是在所有和本机绑定的网络接口中进行遍历。(Enumeration是一个接口,它生成一个一系列元素,一次生成一个。连续调用 nextElement 方法将返回一系列的连续元素。它含有两个方法:
hasMoreElements() 测试此枚举是否包含更多的元素;nextElement() 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。)第二个for循环则是在与每一个网络接口绑定的ip地址中进行遍历。如果在1秒中内不能建立这个连接,则认为该连接不可行。
&&& 但是有时候会出现fe80::aef7:f3ff:fe8c:5da4%wlan0这样的IP地址。这是IPV6的地址。但是我们需要的是IPV4的地址,故需要加上一个判断,即代码中的蓝色部分。蓝色部分实际上就是判断当前的IP是否是IPV4的地址。如果没有这句话,那么IPV6的地址在后面会被默认当做IPV4来处理,所以会出现问题。
发表评论:
TA的最新馆藏[转]&[转]&

我要回帖

更多关于 c语言实现ip地址修改 的文章

 

随机推荐