成语大全网 - 汉语词典 - send的Linux C 函数

send的Linux C 函数

经套接字传送消息

相关函数

sendto,sendmsg,recv,recvfrom,recvmsg,socket

表头文件

#include < sys/socket.h >

定义函数

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

参数说明

第一个参数指定发送端套接字描述符;

第二个参数指明一个存放应用程式要发送数据的缓冲区;

第三个参数指明实际要发送的数据的字符数;

第四个参数一般置0。

函数说明

send() 用来将数据由指定的 socket 传给对方主机。使用 send 时套接字必须已经连接。send 不包含传送失败的提示信息,如果检测到本地错误将返回-1。因此,如果send 成功返回,并不必然表示连接另一端的进程接收数据。所保证的仅是当send 成功返回时,数据已经无错误地发送到网络上。

对于支持为报文设限的协议,如果单个报文超过协议所支持的最大尺寸,send 失败并将 errno 设为 EMSGSIZE ;对于字节流协议,send 会阻塞直到整个数据被传输。

flags 参数有如下的选择:

MSG_DONTROUTE 勿将数据路由出本地网络

MSG_DONTWAIT 允许非阻塞操作(等价于使用O_NONBLOCK)

MSG_EOR 如果协议支持,此为记录结束

MSG_OOB 如果协议支持,发送带外数据

MSG_NOSIGNAL 禁止向系统发送异常信息

返回值

成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno 中。

错误代码

EBADF 参数 s 非法的 socket 处理代码。

EFAULT 参数中有一指针指向无法存取的内存空间。

WNOTSOCK 参数 s 为一文件描述词,非 socket。

EINTR 被信号所中断。

EAGAIN 此动作会令进程阻断,但参数 s 的 socket 为不可阻断的。

ENOBUFS 系统的缓冲内存不足。

EINVAL 传给系统调用的参数不正确。