## sendto ##

经socket传送数据

### 相关函数 ###

send , sendmsg,recv , recvfrom , socket

### 表头文件 ###

```

#include

#include

```

### 定义函数 ###

```

int sendto(int s, const void *msg, int len, unsigned int flags,

const struct sockaddr *to, int tolen);

```

### 函数说明 ###

sendto() 用来将数据由指定的socket传给对方主机。参数s为已建好连线的socket,如果利用UDP协议则不需经过连线操作。参数msg指向欲连线的数据内容,参数flags 一般设0,详细描述请参考send()。参数to用来指定欲传送的网络地址,结构sockaddr请参考bind()。参数tolen为sockaddr的结果长度。

### 返回值 ###

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

### 错误代码 ###

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

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

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

EINTR 被信号所中断。

EAGAIN 此动作会令进程阻断,但参数s的soket为补课阻断的。

ENOBUFS 系统的缓冲内存不足。

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

### 范例 ###

```

#include

#include

#include

#include

#define PORT 2345 /*使用的port*/

main(){

int sockfd,len;

struct sockaddr_in addr;

char buffer[256];

/*建立socket*/

if(sockfd=socket (AF_INET,SOCK_DGRAM,0))<0){

perror (“socket”);

exit(1);

}

/*填写sockaddr_in 结构*/

bzero ( &addr, sizeof(addr) );

addr.sin_family=AF_INET;

addr.sin_port=htons(PORT);

addr.sin_addr=hton1(INADDR_ANY) ;

if (bind(sockfd, &addr, sizeof(addr))<0){

perror(“connect”);

exit(1);

}

while(1){

bezro(buffer,sizeof(buffer));

len = recvfrom(socket,buffer,sizeof(buffer), 0 , &addr &addr_len);

/*显示client端的网络地址*/

printf(“receive from %s\n “ , inet_ntoa( addr.sin_addr));

/*将字串返回给client端*/

sendto(sockfd,buffer,len,0,&addr,addr_len);”

}

}

```

### 执行 ###

请参考recvfrom()

linux sendto 源码,sendto · Linux C API 参考手册 · 看云相关推荐

  1. linux fcntl注销信号,fcntl · Linux C API 参考手册 · 看云

    ## fcntl ## 文件描述词操作 ### 相关函数 ### open,flock ### 表头文件 ### ``` #include #include ``` ### 定义函数 ### ``` ...

  2. linux printf 底层api,printf · Linux C API 参考手册 · 看云

    ## printf ## 格式化输出数据 ### 相关函数 ### scanf,snprintf ### 表头文件 ### ``` #include ``` ### 定义函数 ### ``` int ...

  3. linux python源码安装,linux上源码安装python

    以下例子基于python 2.7.9,其他版本同理.# 1.下载python# wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tg ...

  4. linux nat源码分析,Linux下NAT/NAPT规则源码分析

    前面有一篇文章分析了为什么在PREROUTING做DNAT对本地连接不起作用?本文再紧接着上文,深入分析一下NAT/NAPT的规则. 事情的起因要从上的那篇的文章说起,因为我的本科生毕业设计也是做P2 ...

  5. Linux编译程序源码环境,Linux下对nodejs环境进行源码编译并部署云应用

    Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言. 该环境安装非常简单,这里 ...

  6. linux top 源码,在Linux系统中下载源码包安装Topgrade的方法,附Topgrade选项说明

    本文介绍在Linux操作系统中下载源码包安装Topgrade的方法,即下载topgrade-v2.3.0-x86_64-unknown-linux-gnu.tar.gz包并进行安装,经测试,在Ubun ...

  7. linux 远程控制 源码,基于Linux的远程控制技术服务端实现

    远程控制系统的背景与需求分析 2.1 Linux平台下远程控制系统的产生 远程控制系统在现代社会有着越来越广泛的应用.远程控制中的嵌入技术.远程控制的数据处理与传输.远程控制的管理和远程控制的终端都取 ...

  8. linux内核源码漫游,Linux内核源代码漫游

    Linux源代码,以帮助读者对源代码的体系结构以及很多相关的unix特性的实现有一个很好的理解.目标是帮助对Linux不甚了解的有经验的C程序员对整个Linux的设计有所了解.这也就是为什么内核漫游的 ...

  9. linux mod_ssl源码安装,linux下不重新编译apache添加安装mod_ssl模块和错误的处理方法...

    安装步骤 1.进入apache源码目录. 2.进入module文件夹下的ssl目录. 3.找到oepnssl 的include路径,ubuntu系统是在/usr/include/openssl目录. ...

最新文章

  1. 257.二叉树的所有路径
  2. 实例解读:如何减少Docker中的Java内存消耗
  3. UVA 11054 Wine trading in Gergovia
  4. D-Link 不止暴露固件镜像密钥,还被曝5个严重0day
  5. 为什么我不建议你用去 “ ! = null “ 做判空?
  6. 如何利用手机的OCR文字识别功能制作扫描件?
  7. OverFeat 详解
  8. 图片太大怎么压缩变小?图片如何压缩?
  9. 二进制转十进制python程序_二进制转换(使用Python实现十进制转换器)
  10. 计算机显示器分辨率,电脑分辨率多少合适,详细教您电脑显示器分辨率怎么调整...
  11. Android直播中弹幕效果实现
  12. 华为防火墙(VRRP)
  13. 适配器模式【Adapter Pattern】
  14. 干货 | 科研人的KPI怎么算,H指数和G指数是什么
  15. SQL优化--not in和or出的问题
  16. 1、Anaconda安装TensorFlow(一)
  17. oracle EM的安装配置
  18. TemplatesImpl在Shiro中的利用
  19. WORD另存为PDF时出现乱码的解决方案
  20. cad java web_【浩辰CAD和锐洋Java web打印控件哪个好用】浩辰CAD和锐洋Java web打印控件对比-ZOL下载...

热门文章

  1. Boolean类型(基本与包装类型)
  2. Android APK包反编译详细步骤教程
  3. mysql 黑窗口连接数据库以及常用数据类型
  4. 四类异常检测算法综述:Isolation Forest、LOF、PCA及DAGMM
  5. kettle获取当前日期_kettle获取系统时间
  6. idea ubuntu 汉字_ubuntu下 Intellij IDEA菜单栏中文乱码和常用设置
  7. 基本语言细节---C++ 虚函数表解析 陈皓
  8. 【Nginx 日志配置】【访问日志log_format】【错误日志error_log 指令】【Nginx的日志轮转】
  9. 实现Callable接口
  10. 刚刚开始学习java,自己慢慢写了最基础的吃货联盟