Linux下Socket程式設計學習(五)

2021-06-27 22:43:41 字數 748 閱讀 9328

這章講下產生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...