学习啦>学习电脑>操作系统>Linux教程>

linux的send命令

时间: 佳洲1085 分享

  linux下的send命令可用于基于连接的套接字,下面由学习啦小编为大家整理了linux的send命令的相关知识,希望对大家有帮助!

  linux的send命令详解

  功能描述:发送消息,send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。

  用法:

1
2
3
4
5
6
#include <sys/types.h>
#include <sys/socket.h>
 
ssize_t send(int sock, const void *buf, size_t len, int flags);
ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
ssize_t sendmsg(int sock, const struct msghdr *msg, int flags);

  linux的send命令参数

  sock:索引将要从其发送数据的套接字。

  buf:指向将要发送数据的缓冲区。

  len:以上缓冲区的长度。

  flags:是以下零个或者多个标志的组合体,可通过or操作连在一起

  MSG_DONTROUTE:不要使用网关来发送封包,只发送到直接联网的主机。这个标志主要用于诊断或者路由程序。

  MSG_DONTWAIT:操作不会被阻塞。

  MSG_EOR:终止一个记录。

  MSG_MORE:调用者有更多的数据需要发送。

  MSG_NOSIGNAL:当另一端终止连接时,请求在基于流的错误套接字上不要发送SIGPIPE信号。

  MSG_OOB:发送out-of-band数据(需要优先处理的数据),同时现行协议必须支持此种操作。

  to:指向存放接收端地址的区域,可以为NULL。

  tolen:以上内存区的长度,可以为0。

  msg:指向存放发送消息头的内存缓冲,结构形态如下

  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;

  };

  可能用到的数据结构有

  struct cmsghdr {

  socklen_t cmsg_len;

  int cmsg_level;

  int cmsg_type;

  };

linux的send命令

linux下的send命令可用于基于连接的套接字,下面由学习啦小编为大家整理了linux的send命令的相关知识,希望对大家有帮助! linux的send命令详解 功能描述:发送消息,send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存
推荐度:
点击下载文档文档为doc格式
3632010