相關函數
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不正確。