兩個計算機通訊的過程,就像兩個人打**一樣
socket 套接字
socket又稱"套接字",應用程式通常通過"套接字"向網路發出請求或者應答網路請求。
為網路服務提供一種機制
網路通訊其實就是socket之間的通訊
資料在兩個socket之間通過io傳輸
socket是純c語言的,是跨平台的
http基於socket
底層使用的是tcp協議
socket的通訊過程
建立socket
連線到伺服器
傳送資料給伺服器
從伺服器接收資料
關閉連線
重點:"理解"什麼是socket.
nc -lk 埠號 :始終監聽本地計算機此埠的資料.
匯入三個標頭檔案
socket
書寫步驟
/**/
建立客戶端 socket.
int socketnumber = socket(af_inet,sock_stream,0);
if (socketnumber > 0) else;
連線到伺服器/*
連線到伺服器.
三個引數:
1.客戶端socket.
2.接收方的socket引數.
3.資料長度.
返回值: 0 表示成功,其他: 錯誤代號.*/
//1.伺服器socket
struct sockaddr_in serveraddress;
// ipv4協議.
serveraddress.sin_family = af_inet;
//接收方(伺服器)ip位址.
serveraddress.sin_addr.s_addr = inet_addr("127.0.0.1");
// 埠號.
serveraddress.sin_port = htons(56789);
//serveraddress 的資料長度.
socklen_t length =sizeof(serveraddress);
// 連線伺服器.
//在c語言中,傳遞結構體的時候,會指定結構體的長度
//&取的是資料的起始位置,只有傳遞乙個資料的長度,才能夠保證拿到完整的結構體資料.
//返回值:0成功,其他都是失敗.
int connection =connect(socketnumber, (const
struct sockaddr *)&serveraddress,length);
if (!connection) else
傳送訊息到伺服器/*
傳送訊息到伺服器
引數:1> 客戶端socket.
2> 傳送內容位址.
3> 傳送內容長度.
4> 傳送方式標識,一般為0.
*///
傳送訊息內容
nsstring *msg =@"hello socket!";
msg.length :表示的是oc字串的長度.
msg.utf8string :將oc字串轉換成 utf8 的 ascii 碼,乙個漢字需要占用3個位元組的長度.
strlen :計算所有 ascii 碼的長度.
// 傳送訊息
ssize_t result = send(socketnumber, msg.utf8string,strlen(msg.utf8string),0);
nslog(@"result = %ld",result);
伺服器接收訊息/*
接收伺服器接返回的訊息
引數:1> 客戶端socket.
2> 接收內容快取區.
3> 接收內容快取區長度.
4> 接收方式.0表示阻塞式.必須等待伺服器返回資料.
返回值:
如果成功,則返回接收到的位元組數.失敗則返回socket_error */
//建立接收內容快取區.
uint8_t buffer[1024];
// 接受訊息
ssize_t len = recv(socketnumber, buffer,sizeof(buffer),0);
nslog(@"len: %zd",len);
//取出接受內容快取區中的資料.
nsdata *data = [nsdata datawithbytes:buffer length:len];
//將二進位製流資料data轉換成字串型別.
nsstring *receive = [[nsstring alloc] initwithdata:dataencoding:nsutf8stringencoding];
nslog(@"receive:%@",receive);
關閉socket
close(socketnumber);
說說浮動那些事兒
什麼是浮動 css 的 float 浮動 使元素向左或向右移動,在其周圍的元素也會重新排列。float 浮動 往往是用於影象,但它在 盒子 布局時一樣非常有用。元素怎樣浮動 元素的水平方向浮動,意味著元素只能左右移動而不能上下移動 乙個浮動元素會盡量向左或向右移動,直到它的外邊緣碰到包含框或另乙個浮...
說說部落格的那些事兒
adversity leads to prosperity.窮則思變 讀書的時候,經常看別人都讀的輕輕鬆鬆的,還拿個高分,自己累死累活的,卻依然成績平平不見起色的時候,便很羨慕別人,私下裡留心別人是怎麼看書學習的,課下找他們玩,跟他們聊聊學習上的這些事兒 別人怎麼做我怎麼做,時間長了,發現比之前更累...
socket程式設計的那些事兒
1 python的socket程式設計中socket.so reuseaddr的含義 socket中so reuseaddr詳解 2 socket程式設計的time wait和close wait狀態 1 定義 tcp四次揮手時,主動發起斷開連線的一方最後會進入time wait狀態,而被動斷開連線...