to:指向存放接收端地址的區(qū)域,可以為NULL。
tolen:以上內(nèi)存區(qū)的長度,可以為0。
msg:指向存放發(fā)送消息頭的內(nèi)存緩沖,結(jié)構(gòu)形態(tài)如下
struct msghdr {
void *msg_name;
socklen_t msg_namelen;
struct iovec *msg_iov;
size_t msg_iovlen;
void *msg_control;
socklen_t msg_controllen;
int msg_flags;
};
可能用到的數(shù)據(jù)結(jié)構(gòu)有
struct cmsghdr {
socklen_t cmsg_len;
int cmsg_level;
int cmsg_type;
};
返回說明:
成功執(zhí)行時,返回已發(fā)送的字節(jié)數(shù)。失敗返回-1,errno被設(shè)為以下的某個值
EACCES:對于Unix域套接字,不允許對目標(biāo)套接字文件進(jìn)行寫,或者路徑前驅(qū)的一個目錄節(jié)點(diǎn)不可搜索
EAGAIN,EWOULDBLOCK: 套接字已標(biāo)記為非阻塞,而發(fā)送操作被阻塞
EBADF:sock不是有效的描述詞
ECONNRESET:連接被用戶重置
EDESTADDRREQ:套接字不處于連接模式,沒有指定對端地址
EFAULT:內(nèi)存空間訪問出錯
EINTR:操作被信號中斷
EINVAL:參數(shù)無效
EISCONN:基于連接的套接字已被連接上,同時指定接收對象
EMSGSIZE:消息太大
ENOMEM:內(nèi)存不足
ENOTCONN:套接字尚未連接,目標(biāo)沒有給出
ENOTSOCK:sock索引的不是套接字
EPIPE:本地連接已關(guān)閉