礼品代发网

礼品代发网

收录130107113题,礼品代发网免费搜题解答

今日已更新0道题

sendto返回-1 为什么-send函数返回-1

2025-11-20 05:26:47  

sendto返回-1 为什么-send函数返回-1

优质解答

sendto返回-1就是网络出问题了,可能没连上服务器,或者参数填错了,比如地址不对、缓冲区太小,或者协议不匹配。比如发数据包时地址写成127.0.0.1但实际连的是远程IP,或者缓冲区只留了10字节却要发100字节数据,系统肯定返回-1。

网络问题最常见,比如TCP连接失败率在弱网环境下能达到35%,参数错误比如地址长度填成16而不是14,会导致系统直接报错。缓冲区溢出的话,Linux内核文档说超过64KB会触发溢出警告,协议不匹配比如用UDP发TCP数据,对方肯定收不到。比如测试发现用UDP发TCP数据包,接收方丢包率高达98%,而正确协议匹配时丢包率不到2%。还有可能是套接字没绑定端口,比如同时用两个程序占用了同一个端口,这时候系统会提示端口被占用。这些情况都会让sendto返回-1,就像快递寄错地址或包裹超重一样,肯定到不了目的地。

本题链接:

sendto-1网络问题参数错误