Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >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通信机制详解
前面介绍了TCP,TCP是面向连接的、安全的、流式传输协议。UDP是面向无连接的、不安全的、报式传输协议。UDP通信流程如下:
mindtechnist
2024/12/25
3180
UDP通信机制详解
I/O 实现:多线程,信号驱动的代码实现
之前介绍了五种 I/O ,具体信息可以看文章,然后就是代码实现了,废话不多数,上代码!
ge3m0r
2024/05/14
1590
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
9890
基于UDP的C/S模型代码实现
传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但UDP也是网络通信中不可或缺的重要通信手段。
mindtechnist
2025/03/24
770
基于UDP的C/S模型代码实现
【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
我们之前讲解了关于socket编程的一些基础知识和接口函数,今天我们就来小试牛刀一下,自己编写一个简单的echo_server程序,将客户端的数据在服务端打印出来(利用udp协议实现)!
用户11316056
2024/11/19
2350
【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
python recvfrom函数详解_UDP sendto和recvfrom使用详解「建议收藏」
在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。
全栈程序员站长
2022/09/15
2.3K0
UDP服务端和客户端通信代码开发流程
面向无连接的,不稳定的,不可靠,不安全的数据报传递=---更像是收发短信,UDP传输不需要建立连接,传输效率更高,在稳定的局域网内部环境相对可靠
莫浅子
2023/11/03
6390
UDP服务端和客户端通信代码开发流程
UDP协议 sendto 和 recvfrom 浅析与示例
  UDP(user datagram protocol)用户数据报协议,属于传输层。
全栈程序员站长
2022/09/06
1.3K0
UDP协议 sendto 和 recvfrom 浅析与示例
UDP英译汉网络词典
这里我们用UDP实现一个简单的英译汉小词典。我们还是仿照前一篇的UDP编程,将各自的组件封装起来,实现高内聚低耦合。
小灵蛇
2024/09/09
1330
UDP英译汉网络词典
你说UDP是无连接的,那么UDP connect 有啥用?
UDP 套接字调用 connect 函数和 TCP connect 调用引起 TCP 三次握手,建立 TCP 有效连接不同,UDP connect 函数的调用,并不会引起和服务器目标端的网络交互,也就是说,并不会触发所谓的“握手”报文发送和应答。
穿过生命散发芬芳
2025/01/16
1240
基于UDP的服务器端/客户端
UDP程序中,调用sendto函数传输数据前完成对套接字的地址分配工作,因此调用bind函数。当然,bind函数不区分TCP和UDP。另外调用sendto函数时尚未分配地址信息,则在首次调用sendto函数时给相应套接字自动分配IP地址和端口。而且此时分配的地址一直保留到程序结束为止。因此也可用来与其他UDP套接字进行数据交换,当然IP用主机IP,端口号选尚未使用的任意端口号。综上所述,调用sendto函数时自动分配IP和端口号,因此UDP客户端中通常无需额外的地址分配过程。
玖柒的小窝
2021/12/15
2.7K0
1-UNIX网络编程-Socket套接字编程简介
触发学习UNIX网络编程的动力在于前段时间需要开发一个接入服务,需要考虑比较高的并发处理能力,且尽量少占用的机器资源,选用了JAVA的Netty框架,学习过程产生不少疑问,限于基础知识太薄弱无法理解原理,所以开始关注UNIX编程。
zoujunjie202
2022/07/27
1.3K0
1-UNIX网络编程-Socket套接字编程简介
SOCKET网络编程 (通俗易懂入门篇)
struct sockaddr :很多网络编程函数的出现早于IPV4协议,为了向前兼容,现在sockaddr都退化成(void *)结构了。 传递一个地址给函数,然后由函数内部再强制类型转换为所需的地址类型。
看、未来
2020/08/25
1.1K0
SOCKET网络编程 (通俗易懂入门篇)
广播与组播
广播的例子随处可见,比如说把屏幕共享给很多人,其实也是广播,首先把屏幕截图,然后广播给所有的客户端,比如说屏幕共享软件,一般都有一个广播地址,只要在同一个网段的客户端都能收到广播,如果设置广播地址为255.255.255.255,那么不管哪个网段都能收到广播。屏幕共享软件会把当前屏幕截图并分为很多小块,然后压缩,广播给所有客户端,客户端再进行解压。
mindtechnist
2024/08/08
2050
广播与组播
【在Linux世界中追寻伟大的One Piece】Socket编程UDP
在网络编程中,当一个进程需要绑定一个网络端口以进行通信时,可以使用INADDR_ANY作为IP地址参数。这样做意味着该端口可以接受来自任何IP地址的连接请求,无论是本地主机还是远程主机。例如,如果服务器有多个网卡(每个网卡上有不同的IP地址),使用INADDR_ANY可以省去确定数据是从服务器上具体哪个网卡/IP地址上面获取的。
枫叶丹
2024/10/24
1380
【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息
任何一个UDP服务通信中,都需要有一个int sockfd的文件描述符,按照系统编程中所说,这里打印出来的文件描述符应该是3,因为0,1,2已经被占用了。
南桥
2024/10/20
2480
【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息
网络编程入门_回显服务器
sockaddr和sockaddr_in包含的数据都是一样的,但他们在使用上有区别: 程序员不应操作sockaddr,sockaddr是给操作系统用的 程序员应使用sockaddr_in来表示地址,sockaddr_in区分了地址和端口,使用更方便。 一般的用法为: 程序员把类型、ip地址、端口填充sockaddr_in结构体,然后强制转换成sockaddr,作为参数传递给系统调用函数
yifei_
2022/11/14
7290
网络编程入门_回显服务器
【网络】Socket编程TCP/UDP&&序列化和反序列化理解应用层(C++实现)&&Json::Value
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
用户10925563
2024/11/21
2440
【网络】Socket编程TCP/UDP&&序列化和反序列化理解应用层(C++实现)&&Json::Value
网络编程 - Linux Socket编程
  socket(套接字)是网络编程编程的一种技巧。通过socket不仅可以实现跨进程通信,还可以实现跨主机的网络通信。使用这种技术,就可以实现全国各地的通讯。例如:深圳的一台电脑接收来自北京一台电脑发来的信息。   本篇不涉及太底层的网络原理,仅说明socket的基本使用方法。主要参考《Linux网络编程》。本篇源码获取方式见文底小字。
开源519
2023/03/09
10K0
网络编程 - Linux Socket编程
第8章 基本UDP套接字编程
客户端: #include "../Gnet.h" void do_client(int udpfd, struct sockaddr* pserver_addr, socklen_t server_addr_len) { char buf[MAX_LINE]; int nread; while(fgets(buf, MAX_LINE, stdin) != NULL) { sendto(udpfd, buf, strlen(buf), 0, pserv
_gongluck
2018/03/09
8280
第8章 基本UDP套接字编程
相关推荐
UDP通信机制详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档