這章講下產生sigpipe訊號的原因
往乙個已經收到fin的套接字中寫是允許的,接收到fin僅僅代表對方不再傳送資料。
如果對方程序不存在了,你還寫資料那麼會返回乙個rst段rst段之後,如果再呼叫write就會產生sigpipe訊號,對於這個訊號直接忽略就ok了
singal(sigpipe,sig_ign);
五種i/o模型
阻塞i/o
非阻塞i/o
i/o復用(select和poll)
訊號驅動i/o
非同步i/o
阻塞i/o
recv進行阻塞
當有資料到來 會從核心空間拷貝到使用者空間 recv返回
非阻塞i/o
recv設定為非阻塞模式(fcntl(fd,f_setfel,flag|o_nonblock))
沒有資料返回錯誤 -1 errono =ewouldblock
不停的輪詢 直到有資料到來
應用範圍很窄基本不會去用啦
i/o復用(select和poll)
使用select來實現
select可以管理多個檔案描述符,一旦有乙個或多個有資料到來就可以返回
在select中阻塞
訊號驅動i/o
基本上不用 使用者空間建立sigio訊號。當有資料到來時就以訊號的方式通知程式
非同步i/o
遞送乙個應用層的緩衝區,即使沒有資料到來也返回,當有資料到來之後,核心就將資料拷貝到應用層緩衝區
通知上層程式
linux下socket程式設計
一 什麼是socket socket可以看成是使用者程序與核心網路協議棧的程式設計介面。socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間通訊。socket api是一層抽象的網路程式設計介面,適用於各種底層網路協議,如ipv4 ipv6。struct sockaddr in...
linux下socket程式設計
作為乙個嵌入式開發者,在實際的研發專案中,常常需要編寫socket網路程式設計介面,提供給軟體開發人員。下面將提供乙個常用的 模板 客戶端的功能可以用微控制器多功能除錯助手進行驗證 include include include include include include include def...
linux下socket程式設計
簡單的linux下socket程式設計,分別基於tcp和udp協議實現的簡單程式 linux下socket程式設計可以概括為以下幾個函式的運用 流程 將套接字繫結到伺服器的網路位址上 if bind server sockfd,struct sockaddr my addr,sizeof struc...