Socket 網路程式設計

2021-07-03 01:28:49 字數 2798 閱讀 3760

[-]

tcpipudp

socket

使用socket

**示例

延伸閱讀

tcp/ip(transmission control protocol/internet protocol)即傳輸控制協議/網間協議,是乙個工業標準的協議集,它是為廣域網(wans)設計的。 

udp(user data protocol,使用者資料報協議)是與tcp相對應的協議。它是屬於tcp/ip協議族中的一種。 

下面這張圖,表明了這些協議的關係,如圖tcp/ip協議族包括運輸層、網路層、鏈路層: 

在圖1中,我們沒有看到socket的影子,那麼它到底在**呢?還是用圖來說話,一目了然。 

socket是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp/ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。

前人已經給我們做了好多的事了,網路間的通訊也就簡單了許多,但畢竟還是有挺多工作要做的。以前聽到socket程式設計,覺得它是比較高深的程式設計知識,但是只要弄清socket程式設計的工作原理,神秘的面紗也就揭開了。 

乙個生活中的場景。你要打**給乙個朋友,先撥號,朋友聽到**鈴聲後提起**,這時你和你的朋友就建立起了連線,就可以講話了。等交流結束,結束通話**結束此次交談。生活中的場景就解釋了這工作原理,也許tcp/ip協議族就是誕生於生活中,這也不一定。

#import "viewcontroller.h"

#import

#import

#import

@inte***ce viewcontroller ()

// 客戶端 socket

@property (nonatomic, assign) int clientsocket;

@property (nonatomic, weak) iboutlet uiwebview *mywebview;

@end

@implementation viewcontroller

/*******== 請求頭 *****==

1> 請求行

get 表示從伺服器"拿"資料

/ 訪問伺服器的根目錄

http/1.1 http的協議以及版本

2> 請求頭

host: 要訪問的主機

user-agent: 使用者**,告訴伺服器客戶端的型別

accept: 告訴伺服器客戶端支援的資料格式

accept-language: 告訴伺服器客戶端支援的語言

accept-encoding: 告訴伺服器客戶端支援的解壓縮型別

http請求本身的格式,是字串格式的,最末一行,以 \n\n 結束,表示所有請求的內容傳送完畢,伺服器可以處理!

**********響應 **********=

1> 狀態行

http/1.1 http的協議以及版本

200 狀態碼(404)

2xx 成功

4xx 客戶端錯誤

5xx 伺服器錯誤

2> 響應頭,伺服器告訴客戶端的一些資訊

date: 響應日期

server: 伺服器的資訊

// 檔案長度

content-length: 24

3> 資料實體,從伺服器返回的二進位制資料!

println("hello world!");

*/- (void)viewdidload

// 傳送訊息給 web 伺服器

// 建立請求字串

// 對結果的處理

nsstring *result = [self sendandrecv:request];

// 找 \r\n 的出現的位置

nsrange range = [result rangeofstring:@"\r\n\r\n"];

// 判斷是否找到

if (range.location == nsnotfound)

nsstring *html = [result substringfromindex:range.location];

[self.mywebview loadhtmlstring:html baseurl:[nsurl urlwithstring:@""]];

}- (bool)connecttohost:(nsstring *)host port:(int)port

/*** 傳送&接收訊息

*/- (nsstring *)sendandrecv:(nsstring *)msg

}return [[nsstring alloc] initwithdata:datam encoding:nsutf8stringencoding];

}/**

* 斷開連線

*/- (void)disconnect

@end

1.linux socket 程式設計: 

2. 網路程式設計學習筆記一:socket程式設計: 

sqlite 使用介紹

終端下sqlite的使用頂

1 踩

網路程式設計 Socket程式設計

一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...

socket網路程式設計

首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...

Socket網路程式設計

socket 網路程式設計 在c free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構 main.h ifndef main h define main h include bool winapi main proc hwnd hwnd,uint umsg,wparam wparam...