【iOS開原始碼】(1):CCLHTTPServer,ioscclhttpserver

來源:互聯網
上載者:User

【iOS開原始碼】(1):CCLHTTPServer,ioscclhttpserver

我從沒有見過比 CCLHTTPServer 更簡單的 iOS HTTP 伺服器了。你甚至不用建立任何子類即可使用它。對於大部分任務,這個小巧但強悍的伺服器能夠滿足你的需要。

它簡單到令人髮指,因此我認為光看它的首頁介紹就已經足夠了:

https://github.com/cocodelabs/CCLHTTPServer

 

CCLHTTPServer 是一個 iOS/OSX 下的簡單HTTP 伺服器架構。

 

一、用法

 

以下代碼建立了一個簡單的 HTTP 伺服器,監聽指定連接埠,並用指定的 CCLHTTPServerResponse類(子類)進行響應。

Objective-C:

CCLHTTPServer*server = [[CCLHTTPServer alloc] initWithInterface:nil port:8080handler:^id<CCLHTTPServerResponse>(id<CCLHTTPServerRequest>request) {

    NSDictionary *headers = @{

        @"Content-Type":@"text/plain; charset=utf8",

    };

 

    NSData *body = [@"Hello World"dataUsingEncoding:NSUTF8StringEncoding];

 

    return [[CCLHTTPServerResponse alloc]initWithStatusCode:200 headers:headers body:body];

}];

Switf:

varserver:CCLHTTPServer=CCLHTTPServer(interface: nil, port: 7433, handler:

            {request in

               

            let headers =["Content-Type": "text/plain; charset=utf8"]

           

            let body = "Hello World".dataUsingEncoding(NSUTF8StringEncoding);

           

            returnCCLHTTPServerResponse(statusCode: 200, headers: headers, body: body)

            })

CCLHTTPServerResponse 必須對傳遞給它的request 參數進行處理。request 參數是一個實現了CCLHTTPServerRequest 協議的對象,該協議封裝了各種有用的方法,你可以利用這些方法建立一個各種 response(該協議下面會詳細介紹)。

CCLHTTPServer 的目的是暴露一個用於建立HTTP 伺服器的標準 O-C 介面,見CLLHTTPServer/Interface 目錄。也就是說,別的 HTTP 伺服器也能使用這些介面,開發人員不用管某個伺服器的具體實現即可使用該介面編寫自己的架構。

 

二、請求 Request

 

request 是一個實現了 CCLHTTPServerRequest 協議的對象,該協議暴露了 HTTP 要求的基本詳細例如要求方法、路徑、HTTP 版本,headers 以及本文。

@protocol CCLHTTPServerRequest<NSObject>

- (NSString *)method;

- (NSString *)path;

- (NSString *)HTTPVersion;

- (NSDictionary *)headers;

- (NSData *)body;

@end

三、響應 Responses

你可以建立一個 response 類,也可以使用的任何已經實現了 CCLHTTPServerResponse協議的已有類。當然,絕大多數情況下,使用 CCLHTTPServerResponse 足矣。

1、返回 NSData 資料

[CCLHTTPServerResponseresponseWithStatusCode:204 headers:nil body:nil];

2、返迴文本資料

[CCLHTTPServerResponseresponseWithStatusCode:200

                                     headers:nil

                                     content:@"Hello World"

                                 contentType:@"plain/text"];

3、返回 URL 編碼的名值對

 這種形式如同: name=Kyle&sex=female

 [CCLHTTPServerResponseformURLEncodedResponseWithStatusCode:200

                                                   headers:nil

                                                parameters:@{@"name": @"Kyle"}];

 

4、返回 JSON 資料

 [CCLHTTPServerResponseJSONResponseWithStatusCode:200

                                          headers:nil

                                      parameters:@{@"name": @"Kyle"}];

四、安裝

pod 'CCLHTTPServer'


andriod與ios,一個是開原始碼一個是閉原始碼,那除了蘋果軟體要經過商店發行andriod

ios軟體穩定性高,相對安全。安卓使用者多
 
ios macosx 與unix是什關係?unix不開放原始碼,為何說蘋果承諾開源?

macOSX是複合核心,有三個部分融合而成,這個複合的核心名為XNT,是開源項目。XNT=X is Not Unix,意思為“OSX不是UNIX”,而實際上OSX也並不是簡單的FreeBSD拿過來套上GUI,而是把核心整個改造了。仍屬於 類UNIX系統,注意不是unix,而是類unix。
XNT是開源的。加上一些驅動和系統程式的XNT被稱為Darwin,它曾經是開源項目,在OSX轉向x86架構後停止對x86部分的開源,但仍然對PowerPC部分開源。(這主要是因為喬布斯本人的性格原因,另外蘋果當時確實已經不需要開源社區來找bug了)

linux也是一種類unix,儘管它的實現原理和unix完全不同,但是它繼承了unix精神。
deb是debian系統的一種安裝包格式,debian是一種分支眾多的linux系統。主要分支基於Linux宏核心和GUN,典型的就是常見的ubuntu。非debian,例如fedora,就安裝不了deb,linux通用的安裝軟體方式只有編譯代碼,deb包對不同的linux是不通用的。所以安卓只是一個linux核心上開java虛擬機器,不能安裝deb包。

IOS作業作業系統部分源於darwin,darwin是基於XNT核心的類UNIX系統,因此linux debian的deb是不能安裝在IOS上的。但是IOS上存在debian的apt系統,也就是說可以安裝對IOS封包的deb包,更可以利用Cydia這種帶UI的APT來安裝deb。

儘管喬布斯本人是對開源持不感冒態度,而且曾和另一個和他性格相近的大神Mr. Linus吵起來,
但是蘋果是世界最大的以開源為關鍵戰略的公司之一,這點不可否認。它家的開源項目還有webkit瀏覽器核心,現用於chrome、safari、各種第三方瀏覽器以及幾乎所有的ARM裝置。蘋果還有幾個在更專業的領域裡非常重要的開源項目,比如編譯器架構LLVM,異構編程架構OpenCL,服務發現協議實現Bonjour等,這些在各領域都是大名鼎鼎了,LLVM已經成為了創新的溫床之一,一大堆項目依賴於蘋果的開源項目。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.