C语言sendto()函数:经socket传送数据
相关函数:send, sendmsg, recv, recvfrom, socket
头文件:#include <sys/types.h> #include <sys/socket.h>
定义函数: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 中.
错误代码:
1、EBADF 参数s 非法的socket 处理代码.
2、EFAULT 参数中有一指针指向无法存取的内存空间.
3、WNOTSOCK canshu s 为一文件描述词, 非socket.
4、EINTR 被信号所中断.
5、EAGAIN 此动作会令进程阻断, 但参数s 的soket 为补课阻断的.
6、ENOBUFS 系统的缓冲内存不足.
7、EINVAL 传给系统调用的参数不正确.
范例
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet.in.h>
#include <arpa.inet.h>
#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()
C语言sendto()函数:经socket传送数据相关推荐
- c语言中recvfrom函数,C语言sendto()函数-经socket传送数据以及recvfrom函数《转》
头文件:#include #include 定义函数:int sendto(int s, const void * msg, int len, unsigned int flags, const ...
- 网络编程 day03 (linux) UDP 协议的传输 与函数 getsockopt setsockopt sendto(经socket传送数据)recvfrom
1.UDP协议的特点 UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议.在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输. 适用情况: 1.发 ...
- R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数
R语言merge函数全连接dataframe数据(Full (outer) join).merge函数进行全连接必须将参数all设置为true(all=TRUE).默认merge函数通过公共列名合并数 ...
- R语言merge函数左连接dataframe数据(Left (outer) join in R)、左连接必须将参数all设置(all.x = TRUE)、默认merge函数通过公共列名合并数据集
R语言merge函数左连接dataframe数据(Left (outer) join in R).merge函数进行左连接必须将参数all设置为(all.x = TRUE).默认merge函数通过公共 ...
- R语言scale函数标准化缩放dataframe数据列实战
R语言scale函数标准化缩放dataframe数据列实战 目录 R语言scale函数标准化缩放dataframe数据列实战 #仿真数据
- R语言names函数获取或者设置数据对象名称实战
R语言names函数获取或者设置数据对象名称实战 目录 R语言names函数获取或者设置数据对象名称实战 #基本语法
- C语言sprintf函数解析(实现数据类型转换到字符串)
最近在将int转为char*字符串上出了问题,最后使用sprintf函数解决, 使用实例: char *char_num; int recv_num=-123456:sprintf(char_num, ...
- c语言中getenv的作用,C语言putenv()函数和getenv()函数的使用详解
C语言putenv()函数和getenv()函数的使用详解 C语言putenv()函数:改变或增加环境变量头文件: #include4 定义函数: int putenv(const char * st ...
- c语言 socket send,C语言中send()函数和sendto()函数的使用方法
C语言send()函数:经socket传送数据头文件: #include #include 定义函数: int send(int s, const void * msg, int len, unsig ...
最新文章
- 解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法...
- 面向过程、面向函数、面向对象的区别浅谈
- [python] list元素按关键字相加减
- 演练:调试 Windows 窗体
- 理想汽车7月交付8589辆理想ONE 单月交付量首次超8000辆
- 西瓜书+实战+吴恩达机器学习(十三)监督学习之随机森林 Random Forest
- Java语言基础:IPO编程模式
- 笨方法学Python-1
- 计算机怎么快速查找应用,win10系统如何快速查找应用?win10系统快速查找应用的方法...
- 利用在线技术更改图片清晰度
- 在三角形中rt是什么意思_数学知识点RT三角形是什么意思
- pdf关键字高亮 java_Java查找并高亮PDF文本过程解析
- DeviceManager--Device administration设备管理器
- 二维码制作之批量生成名片二维码
- 如何确定网站的关键词呢
- 苹果app退款_苹果 App Store 已购买的应用如何申请退款?
- USB 4(USB 4.0)的设计规范(原版)
- S12(X)微控制器的Bootloader程序
- 养生之道---六字气决
- 揭秘HTTP/3优先级
热门文章
- Ubuntu根目录下各文件夹的功能详细介绍
- 【渝粤教育】 国家开放大学2020年春季 2542行政组织学 参考试题
- [渝粤教育] 西南科技大学 西方经济学 在线考试复习资料
- 【渝粤题库】陕西师范大学201661英语阅读(二)作业(高起专)
- java里面自行车的属性_11、Java基础知识
- python集合用法_Python 集合(Set)
- 第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)
- 在一个由小写英文字母(a-z)组成的字符串中,查找最长子串,其头尾字母相同,且中间不包含该头尾字母,并输出最左边的该类子串
- Java实现复数Complex的加减乘除运算、取模、求幅角角度
- Java语言学习概述