當前位置:成語大全網 - 漢語詞典 - Linux C的send函數

Linux C的send函數

通過套接字發送消息

相關函數

sendto,sendmsg,recv,recvfrom,recvmsg,socket

頭文件

# include & ltsys/socket . h & gt;

定義函數

ssize_t send (int s,const void *msg,size_t len,int flags);

參數描述

第壹個參數指定發送方套接字描述符;

第二個參數指示用於存儲要由應用程序發送的數據的緩沖區;

第三個參數表示要發送的數據的實際字符數;

第四個參數壹般設置為0。

功能描述

Send()用於將數據從指定的套接字傳輸到另壹臺主機。使用send時,必須連接套接字。發送不包含傳輸失敗的消息。如果檢測到本地錯誤,將返回-1。所以,如果send返回成功,並不壹定意味著連接另壹端的進程接收到數據。可以保證的是,當send成功返回時,數據已經無誤地發送到網絡。

對於支持消息限制的協議,如果單個消息超過協議支持的最大大小,send失敗,errno設置為emsg size對於字節流協議,send將阻塞,直到傳輸完所有數據。

flags參數有以下選擇:

不要將數據路由到本地網絡之外。

MSG_DONTWAIT允許非阻塞操作(相當於使用O_NONBLOCK)。

MSG_EOR如果協議支持,這是記錄的結尾。

如果協議支持,MSG_OOB發送帶外數據。

MSG_NOSIGNAL禁止向系統發送異常信息。

返回值

成功返回實際傳輸的字符數,失敗返回-1,錯誤原因存儲在errno中。

錯誤代碼

EBADF參數的非法套接字處理代碼。

EFAULT參數中的指針指向不可訪問的內存空間。

WNOTSOCK參數s是文件描述符,不是套接字。

EINTR被信號打斷。

EAGAIN這個動作會阻塞進程,但是參數s的套接字是不可阻擋的。

ENOBUFS系統的緩沖內存不足。

傳遞給系統調用的參數EINVAL不正確。