ping原始碼代閱讀 三 UDP資料報程式

2021-05-28 15:26:37 字數 999 閱讀 4523

非連線的通訊是一種什麼情況呢?

可以通過sedto向任何乙個套介面傳送資料,如果想收聽某一套介面上別人傳送過來的資料,通過bind繫結到這個套接中,使用recvfrom接收.

如果想做應答,那麼通過recvfrom的第五個引數知道了傳送過來程式的情況,進而可以對這個程式進行應答.這樣就可以多個程式向這乙個套介面進行發資料,並由服務端進行不同的應答.好比多個程式傳送過來不同的需要計算的字串列式,而在伺服器端計算好了再返回給不同的程式.

服務端:

srvr_addr = "127.0.0.23";

s = socket(af_inet,sock_dgram,0);

memset(&adr_inet,0,sizeof adr_inet);

adr_inet.sin_family = af_inet;

adr_inet.sin_port = htons(9090);

adr_inet.sin_addr.s_addr =

inet_addr(srvr_addr);

len_inet = sizeof adr_inet;

z = bind(s,

(struct sockaddr *)&adr_inet,

len_inet);

for (;;)

客戶端:

srvr_addr = "127.0.0.23";

memset(&adr_srvr,0,sizeof adr_srvr);

adr_srvr.sin_family = af_inet;

adr_srvr.sin_port = htons(9090);

adr_srvr.sin_addr.s_addr =

inet_addr(srvr_addr);

len_inet = sizeof adr_srvr;

s = socket(af_inet,sock_dgram,0);

for (;;)

ping原始碼代閱讀 三 面向連線tcp ip程式

在ping原始碼代閱讀 一 中,詳細表述了伺服器端和客戶端的互動過程,在這裡以 的形式分析其過程.伺服器端 bind到乙個埠後,使用listen開始收聽所有的請求,這裡在核心建立了乙個長度為10的佇列,一有請求就會放入到隊尾.accept從隊頭取出乙個請求開始處理.然後向此請求寫入資料.s sock...

SparkSQL(原始碼閱讀三)

額,沒忍住,想完全了解sparksql,畢竟一直在用嘛,想一次性搞清楚它,所以今天再多看點好了 曾幾何時,有乙個叫做shark的東西,它改了hive的原始碼。突然有一天,spark sql突然出現,如下圖 好了,不逗了,言歸正傳。那麼一條sql傳統資料庫會是怎麼解析的呢?傳統資料庫的解析過程是按ru...

String原始碼閱讀(三)

public string split string regex,int limit else if no match was found,return this if off 0 return new string 如果limit大於最大返回長度,上面else中的 不會執行,在此處將最後一段放入l...