《Linux函數調用手冊》之___sendmsg經socket傳送數據
定義:
int sendmsg(int s,const strcut msghdr *msg,unsigned int flags);
表頭文件:
#include<sys/types.h>
#include<sys/socket.h>
說明:
sendmsg()用來將數據由指定的socket傳給對方主機。參數s為已建立好連線的socket, 如果利用UDP協議則不需經過連線操作。參數msg 指向欲連線的數據結構內容, 參數flags一般默認為0, 詳細描述請參考send()。
結構msghdr定義如下
struct msghdr
{
void *msg_name; /*Address to send to /receive from . */
socklen_t msg_namelen; /* Length of addres data */
strcut iovec * msg_iov; /* Vector of data to send/receive into */
size_t msg_iovlen; /* Number of elements in the vector */
void * msg_control; /* Ancillary dat */
size_t msg_controllen; /* Ancillary data buffer length */
int msg_flags; /* Flags on received message */
};
返回值:
成功則返回實際傳送出去的字符數, 失敗返回-1, 錯誤原因存于errno
相關函數:
send, sendto, recv, recvfrom, recvmsg, socket
錯誤代碼:
EBADF 參數s 非合法的socket處理代碼。
EFAULT 參數中有一指針指向無法存取的內存空間
ENOTSOCK 參數s為一文件描述詞, 非socket。
EINTR 被信號所中斷。
EAGAIN 此操作會令進程阻斷, 但參數s的socket為不可阻斷。
ENOBUFS 系統的緩沖內存不足
ENOMEM 核心內存不足
EINVAL 傳給系統調用的參數不正確。
示例:
返回頂部 | 《Linux函數調用大全》 | 《Linux命令大全》 | Linux專欄 广西11选五走势图彩经网