iOS專案開發實戰——獲取本機IP地址
在設計iOS網路開發中,我們需要獲取本機的IP地址,那麼通過Swift呼叫OC如何來實現呢?我將會通過一個Swift的iOS專案,然後通過呼叫OC的方法,來實現這個功能。
(1)在Swift專案中新建Cocoa Touch Class,語言選擇Objective-C,然後自動會提示新建一個Swift和OC的橋接檔案,選擇Yes就好。然後就會自動生成一個 “專案名-Bridging-Header.h”的檔案。我新建的OC檔名是GetIPAddress.
。
(2)然後在橋接檔案中加入OC的標頭檔案:
#import "GetIPAddress.h"
(3)然後在OC標頭檔案GetIPAddress.h中實現如下:
#import <Foundation/Foundation.h>
@interface GetIPAddress : NSObject
+ (NSString *)deviceIPAdress;
@end
(4)然後在OC的實現檔案GetIPAddress.m中實現如下:
//
// GetIPAddress.m
// AlertDialogDemo
//
// Created by chenyufeng on 15/9/8.
// Copyright (c) 2015年 chenyufengweb. All rights reserved.
//
#import "GetIPAddress.h"
#include <ifaddrs.h>
#include <arpa/inet.h>
@implementation GetIPAddress
+ (NSString *)deviceIPAdress {
NSString *address = @"an error occurred when obtaining ip address";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
success = getifaddrs(&interfaces);
if (success == 0) { // 0 表示獲取成功
temp_addr = interfaces;
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_next;
}
}
freeifaddrs(interfaces);
NSLog(@"手機的IP是:%@", address);
return address;
}
@end
(5)最後在Swift程式碼中呼叫:
override func viewDidLoad() {
super.viewDidLoad()
var ipAddress = GetIPAddress.deviceIPAdress()//這是一個類方法,可以直接通過類名呼叫;
var dialog = UIAlertView()
dialog.title = "本機IP"
dialog.message = ipAddress
dialog.show()
}
(6)最後的實現結果如下:
。
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!
相關文章
- jQuery獲取本機ip地址jQuery
- Java獲取本機ip地址Java
- Java獲取本機名稱、本機MAC地址、IP地址JavaMac
- java獲取本機的ip地址Java
- iOS專案開發實戰——獲取系統當前時間iOS
- iOS專案開發實戰——使用CoreLocation獲取當前位置資訊iOS
- javascript獲取本機ip地址程式碼例項JavaScript
- Linux下用Java獲取本機IP地址LinuxJava
- python獲取本機IP、mac地址、計算機名PythonMac計算機
- iOS專案開發實戰——使用程式碼獲取螢幕寬高iOS
- 獲取真實IP地址
- Java獲取本機IPJava
- iOS專案開發實戰——使用同步請求獲取網頁原始碼iOS網頁原始碼
- iOS 獲取手機外網和內網IP地址iOS內網
- 用Linux命令列獲取本機外網IP地址Linux命令列
- Linux Shell指令碼中獲取本機ip地址方法Linux指令碼
- iOS專案開發實戰——iOS網路程式設計獲取網頁Html原始碼iOS程式設計網頁HTML原始碼
- Python 基礎練習 —— 獲取本機 Mac 地址、ip 地址和主機名PythonMac
- 在SelfHost專案中獲取客戶端IP地址客戶端
- 【iOS開發】獲取區域網IPiOS
- iOS專案開發實戰——使用非同步請求獲取網頁HTML原始碼iOS非同步網頁HTML原始碼
- Java實現獲取本機Ip的工具類Java
- Apapche獲取真實IP地址方法
- python如何獲取本機ipPython
- 獲取Linux本機IP命令Linux
- 在OwinSelfHost專案中獲取客戶端IP地址客戶端
- saltstack獲取IP地址
- 獲取IP地址方法
- 獲取IP地址命令
- iOS專案開發實戰——獲取當前的UUID(通用唯一識別碼)iOSUI
- iOS專案開發實戰——獲取網頁原始碼的二進位制資料iOS網頁原始碼
- ASPNET獲取IP地址 MAC地址Mac
- java獲取ip地址和mac地址JavaMac
- Oracle中獲取主機名和IP地址Oracle
- 美國ip地址如何獲取?
- qt獲取本機IP地址、計算機名、網路連線名、MAC地址、子網掩碼、廣播地址QT計算機Mac
- iOS專案開發實戰——使用CoreLocation實現定位iOS
- iOS專案開發實戰——理解frame,bounds,centeriOS