socket程式設計中send函式引發的執行緒退出

2021-09-12 10:16:51 字數 368 閱讀 5651

在多執行緒程式設計中其中使用乙個執行緒來accept要連線的客戶端。同時在接受client的請求之後新建乙個執行緒來進行具體的操作。其操作包括向client端傳送一定位元組的資料,使用send()函式來進行操作。如果在傳送過程**現任何乙個client端的斷線,則整個程式都會退出。

ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);

上面為send函式原型,在通常的使用中flags引數一般設定為0.此時如果客戶端斷開,繼續往裡邊寫資料的話,會引發乙個訊號sigpipe,此訊號會引發執行緒的退出、

解決的方法:1)可以將flags引數設定為msg_nosignal。2)設定sig_ign訊號處理函式。

關於socket中的send函式

關於send其實我是要呼叫send函式,但是在乙個地方看到了下面的一段話 當呼叫該函式時,send先比較待傳送資料的長度len和套接字s的傳送緩衝區的長度,如果len大於s的傳送緩衝區的長度,該函式返回socket error 如果len小於或者等於s的傳送緩衝區的長度,那麼send先檢查協議是否正...

Socket中send函式的理解

int send socket s,const char buf,int len,int flags 引數描述 同步socket 的send函式的執行流程如下 如果len大於傳送緩衝區剩餘空間大小 不足放入剩餘傳送緩衝區 send就一直 等待協議把s傳送緩衝區中的資料傳送完 如果len小於傳送緩衝區...

socket中send函式和recv函式的理解

int send socket s,const char buf,int len,int flags 引數描述 同步 socket 的send函式的執行流程如下 如果len大於傳送緩衝區剩餘空間大小 不足放入剩餘傳送緩衝區 send就一直 等待協議把s傳送緩衝區中的資料傳送完 如果len小於傳送緩衝...