前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >recvfrom为何老是返回-1[通俗易懂]

recvfrom为何老是返回-1[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-15 02:42:56
发布于 2022-09-15 02:42:56
1.7K0
举报

大家好,又见面了,我是你们的朋友全栈君。

ios下编写udp Socket时遇到的问题:

int sockfd = socket(AF_INET, SOCK_DGRAM, 0);

bzero((char *)&ca, sizeof(ca)); ca.sin_family = AF_INET; ca.sin_addr.s_addr = htonl(INADDR_ANY); ca.sin_port = htons(SERV_UDP_PORT); int struct_len = sizeof(ca);

int len = -1;

len = sendto(sockfd, recvline, str_len, 0, (struct sockaddr *)&ca,struct_len); //发送数据

len = recvfrom(sockfd, recvline, 512, 0, (struct sockaddr *) &ca, struct_len); //接受数据————————--错误写法

——发送与接收方法实在太像了,一粗心又copy了下,就错误了。【从此recvfrom返回的值永远的停留在==-1】

len = recvfrom(sockfd, recvline, 512, 0, (struct sockaddr *) &ca, (socklen_t *)&struct_len); //接受数据——-正确写法

ps:写代码还是必须要有耐心与细心的。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163427.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
UDP服务端和客户端通信代码开发流程
面向无连接的,不稳定的,不可靠,不安全的数据报传递=---更像是收发短信,UDP传输不需要建立连接,传输效率更高,在稳定的局域网内部环境相对可靠
莫浅子
2023/11/03
6200
UDP服务端和客户端通信代码开发流程
UDP英译汉网络词典
这里我们用UDP实现一个简单的英译汉小词典。我们还是仿照前一篇的UDP编程,将各自的组件封装起来,实现高内聚低耦合。
小灵蛇
2024/09/09
1180
UDP英译汉网络词典
网络编程打开的第一节预备课-----关于socket
传统的进程间通信借助内核提供的 IPC 机制进行, 但是只能限于本机通信, 若 要跨机通信, 就必须使用网络通信,比如之前在操作系统学习到的pipe通信,这是一个本机通信,是最基本的IPC机制进行的。
莫浅子
2023/11/09
1840
网络编程打开的第一节预备课-----关于socket
广播与组播
广播的例子随处可见,比如说把屏幕共享给很多人,其实也是广播,首先把屏幕截图,然后广播给所有的客户端,比如说屏幕共享软件,一般都有一个广播地址,只要在同一个网段的客户端都能收到广播,如果设置广播地址为255.255.255.255,那么不管哪个网段都能收到广播。屏幕共享软件会把当前屏幕截图并分为很多小块,然后压缩,广播给所有客户端,客户端再进行解压。
mindtechnist
2024/08/08
1060
广播与组播
你说UDP是无连接的,那么UDP connect 有啥用?
UDP 套接字调用 connect 函数和 TCP connect 调用引起 TCP 三次握手,建立 TCP 有效连接不同,UDP connect 函数的调用,并不会引起和服务器目标端的网络交互,也就是说,并不会触发所谓的“握手”报文发送和应答。
穿过生命散发芬芳
2025/01/16
750
【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息
任何一个UDP服务通信中,都需要有一个int sockfd的文件描述符,按照系统编程中所说,这里打印出来的文件描述符应该是3,因为0,1,2已经被占用了。
南桥
2024/10/20
2020
【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息
I/O 实现:多线程,信号驱动的代码实现
之前介绍了五种 I/O ,具体信息可以看文章,然后就是代码实现了,废话不多数,上代码!
ge3m0r
2024/05/14
1480
基于UDP的C/S模型代码实现
传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但UDP也是网络通信中不可或缺的重要通信手段。
mindtechnist
2025/03/24
550
基于UDP的C/S模型代码实现
基于UDP的服务器端/客户端
UDP程序中,调用sendto函数传输数据前完成对套接字的地址分配工作,因此调用bind函数。当然,bind函数不区分TCP和UDP。另外调用sendto函数时尚未分配地址信息,则在首次调用sendto函数时给相应套接字自动分配IP地址和端口。而且此时分配的地址一直保留到程序结束为止。因此也可用来与其他UDP套接字进行数据交换,当然IP用主机IP,端口号选尚未使用的任意端口号。综上所述,调用sendto函数时自动分配IP和端口号,因此UDP客户端中通常无需额外的地址分配过程。
玖柒的小窝
2021/12/15
2.6K0
UDP套接口编程
常用的UDP实现的程序:DNS域名系统,NFS网络文件系统,SNMP简单网络管理协议 ssize_t recvfrom(int sockfd,void *buff,size_t nbytes,int flags,struct sockaddr * from,socklen_t *addrlen); ssize_t sendto(int sockfd,void *buff,size_t nbytes,int flags,struct sockaddr * to,socklen_t addrlen); sock
用户1154259
2018/01/17
9620
【C++】基础:网络编程介绍与TCP&UDP示例
网络传输模型可以抽象为7个层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
DevFrank
2024/07/24
3820
【C++】基础:网络编程介绍与TCP&UDP示例
UDP协议 sendto 和 recvfrom 浅析与示例
  UDP(user datagram protocol)用户数据报协议,属于传输层。
全栈程序员站长
2022/09/06
1.2K0
UDP协议 sendto 和 recvfrom 浅析与示例
【在Linux世界中追寻伟大的One Piece】Socket编程UDP
在网络编程中,当一个进程需要绑定一个网络端口以进行通信时,可以使用INADDR_ANY作为IP地址参数。这样做意味着该端口可以接受来自任何IP地址的连接请求,无论是本地主机还是远程主机。例如,如果服务器有多个网卡(每个网卡上有不同的IP地址),使用INADDR_ANY可以省去确定数据是从服务器上具体哪个网卡/IP地址上面获取的。
枫叶丹
2024/10/24
1240
python recvfrom函数详解_UDP sendto和recvfrom使用详解「建议收藏」
在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。
全栈程序员站长
2022/09/15
2.2K0
【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
我们之前讲解了关于socket编程的一些基础知识和接口函数,今天我们就来小试牛刀一下,自己编写一个简单的echo_server程序,将客户端的数据在服务端打印出来(利用udp协议实现)!
用户11316056
2024/11/19
1800
【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
UDP通信机制详解
前面介绍了TCP,TCP是面向连接的、安全的、流式传输协议。UDP是面向无连接的、不安全的、报式传输协议。UDP通信流程如下:
mindtechnist
2024/12/25
2080
UDP通信机制详解
多进程服务器
先与客户端建立好连接, 每次监听到一个客户端之后,都需要产生一个子进程去处理这个连接,然后父进程继续去等待监听,唯一一个要注意的点就是要使用信号来监听子进程是否结束,从而对其进行回收,防止僵尸进程的产生。。。
买唯送忧
2021/09/14
4.7K0
简单的客户机服务器投射模拟
下面模拟了,简单的客户机服务器投射模拟的过程。客户机像服务器发送数据,服务器接受到数据后,发送回给客户机。再由客户机打印出来。 需要的函数: 网络方面 服务器 socket(AF_INET,SOCK_STREAM,0);  AF_INET表示IPV4,SOCK_STREAM表示基于字节流的,0表示协议由前面两个参数组合而成。返回描述符 bind(sockdf,(struct sockaddr*)servaddr,sizeof(servaddr));   用于把描述符与本地协议地址联系起来。 listen
用户1154259
2018/01/17
9380
网络编程入门_回显服务器
sockaddr和sockaddr_in包含的数据都是一样的,但他们在使用上有区别: 程序员不应操作sockaddr,sockaddr是给操作系统用的 程序员应使用sockaddr_in来表示地址,sockaddr_in区分了地址和端口,使用更方便。 一般的用法为: 程序员把类型、ip地址、端口填充sockaddr_in结构体,然后强制转换成sockaddr,作为参数传递给系统调用函数
yifei_
2022/11/14
7020
网络编程入门_回显服务器
【网络】Socket编程TCP/UDP&&序列化和反序列化理解应用层(C++实现)&&Json::Value
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
用户10925563
2024/11/21
1840
【网络】Socket编程TCP/UDP&&序列化和反序列化理解应用层(C++实现)&&Json::Value
相关推荐
UDP服务端和客户端通信代码开发流程
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文