非連線的通訊是一種什麼情況呢?
可以通過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...