首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UDP套接字: recvfrom()返回-1 (SOCKET_ERROR)

UDP套接字: recvfrom()返回-1 (SOCKET_ERROR)
EN

Stack Overflow用户
提问于 2014-12-29 04:39:17
回答 1查看 2.3K关注 0票数 0

我正在开发一个基于UDP协议的服务器客户端应用程序。服务器是用c++编写的,客户端是用C#编写的。

在服务器端,我使用recvfrom()获得缓冲区:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int bufLen = recvfrom(s, buf, 1024, NULL, (sockaddr*)&addr, &addrlen);

奇怪的是,接收到的buf正是我从客户端发送的,但是bufLen是-1,也就是SOCKET_ERROR。

我不知道会有什么问题。请帮帮忙。谢谢你一百万。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-29 04:54:56

您的数据报太大,或者缓冲区太小。

数据报比缓冲区更大,因此它会被转换,您将从recvfrom得到一个错误返回,GetLastError()返回10040,('WSAEMSGSIZE')。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27689067

复制
相关文章
python UDP套接字通信
UDPserver.py 1 import socket 2 #导入套接字模块 3 4 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 5 # - socket.AF_INET:IPV4 6 # - socket.STREAM:TCP 7 # - socket.DGRAM:UDP 8 9 s.bind(('',25555)) 10 #绑定套接字有效地址和端口 11 #''空位任何地址 本地的127.0.0.1 和局域网还有自己真实
py3study
2020/01/19
1.6K0
UDP-Socket一般流程(Windows)
一、 服务端构建步骤 1.初始化套接字环境WSAStartup 2.初始化地址和端口 3.创建UDP套接字socket 4.绑定端口bind 5.用recvfrom接收数据 6.用sendto发送数据 7.退出或者返回5步骤继续 二、客户端构建步骤 1.初始化套接字环境WSAStartup 2.初始化地址和端口 3.创建UDP套接字socket 4.用sendto发送数据 5.用recvfrom接收数据 三、示例代码 Sever: #include <winso
TSINGEYE清眸物联
2023/01/04
4630
基于udp的套接字
1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 4 cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送) 5 ss.close() # 关闭服务器套接字 udp客户端 cs = socket() # 创建客户套接字 comm_loop: # 通讯循环 cs.sendto()/c
超蛋lhy
2018/08/31
8180
JavaTCP和UDP套接字编程
原文地址:http://www.cnblogs.com/MindMrWang/p/8919890.html 在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站(对安全性一起其他并发不作要求)的时候,其实我们会发现,Java后端是真的省事,好像除了CURD还是CURD,没有什么更新鲜的了。但是我们回顾计算机网络的知识提出疑问,计算机信息传输有TCP和UDP两种连接方式,但是我们编程的时候怎么没体现?怎么回事呢?
MindMrWang
2018/09/29
5040
JavaTCP和UDP套接字编程
路由跟踪技术
用来确定路由器的IP地址,也就是在网络上到达特定主机所经过的计算机。 程序需要两个套接字: 1 一个用于接收ICMP封包的原始套接字sRaw 2 用于发送TTL不断增加UDP封包的套接字sSend。 实现代码如下: void main() { char *szDestIp = "10.16.115.178"; // 210.181.18.12910.16.115.25 61.55.66.30 char recvBuf[1024] = { 0 }; // 创建用于接收ICMP封包的
用户1154259
2018/01/17
9300
sendto & recvfrom 详解
sendto和recvfrom一般用于UDP协议中,但是如果在TCP中connect函数调用后也可以用.
全栈程序员站长
2022/09/15
2.4K0
JavaTCP和UDP套接字编程
原文地址:http://www.cnblogs.com/MindMrWang/p/8919890.html 在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站(对安全性一起其他并发不作要求)的时候,其实我们会发现,Java后端是真的省事,好像除了CURD还是CURD,没有什么更新鲜的了。但是我们回顾计算机网络的知识提出疑问,计算机信息传输有TCP和UDP两种连
MindMrWang
2018/04/24
7110
JavaTCP和UDP套接字编程
send,recv,sendto,recvfrom
int send( SOCKET s, const char FAR *buf, int len, int flags );
全栈程序员站长
2022/07/14
1.5K0
【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯
本次实验利用UDP协议, 语言环境为 C/C++ 利用套接字Socket编程,实现Server/CLient 之间简单的通讯。 结果应为类似所示: 下面贴上代码(参考参考...) Server 部分:
书童小二
2018/09/03
2.4K0
【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯
recvfrom为何老是返回-1[通俗易懂]
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
全栈程序员站长
2022/09/15
1.7K0
UDP套接字编程——Python语言描述
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/88639774
zy010101
2019/05/25
7620
MFC的UDP编程实现[通俗易懂]
UDP是面向非连接的通信协议,比TCP协议简单很多。无论是服务器端还是客户端,其通信过程概括为:
全栈程序员站长
2022/10/04
1.4K0
c语言UDP传输系统源码
/*加载库文件*/ #pragma comment( lib, "ws2_32.lib" ) /*加载头文件*/ #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #include <stdlib.h> // 来自公众号:c语言与cpp编程 /*定义多播常量*/ #define MCASTADDR "224.3.5.8" #define MCASTPORT 25000 #define BUFSIZE
C语言与CPP编程
2021/01/02
3.2K0
套接字随笔1
accept函数接受一个客户端请求后会返回一个新的SOCKFD值,当有不同的客户端同时有不同请求时,会返回不同的SOCKFD的值。这个不同的值和建立SOCKET 时生成的SOCKFD还是不同的。服务器与客户端之间的通信就是在这些不同的SOCKFD上进行的。
随心助手
2022/11/30
5530
【Linux】网络基础+UDP网络套接字编程
1. 首先计算机是人类设计出来提高生产力的工具,而人类的文明绵延至今一定离不开人类之间互相的协作,既然人类需要协作以完成更为复杂的工作和难题,所以计算机作为人类的工具自然也一定需要协作,而计算机之间的协作其实说白了就是网络通信,也就是各个主机之间的数据互通。 所以我们可以得出来结论,计算机网络的出现是必然的。 而刚开始的计算机之间确确实实是各自相互独立的,他们想要进行通信那就只能人为的拷贝数据到U盘,然后把U盘插到另一个主机上,让另一个主机来进行网络通信,只要是人参与的工作他一定是效率低的,所以为了避免这种效率低下的通信方式,第一版本的通信方案搞出来了服务器,即为多个主机之间通过一台服务器进行网络通信,每个主机可以将自己的数据发送到服务器上,其他主机想要拿到数据,则可以直接从服务器里面读取数据。
举杯邀明月
2023/10/17
4070
【Linux】网络基础+UDP网络套接字编程
accept()返回的套接字绑定哪个端口 新旧套接字的联系
摘要:对于服务器编程中最重要的一步等待并接受客户的连接,那么这一步在编程中如何完成,accept函数就是完成这一步的。它从内核中取出已经建立的客户连接,然后把这个已经建立的连接返回给用户程序,此时用户程序就可以与自己的客户进行点到点的通信了。
bear_fish
2018/09/20
3.9K1
windows环境下用c++实现socket编程
socket即套接字,用于描述地址和端口,是一个通信链的句柄。应用程序通过socket向网络发出请求或者回应。
全栈程序员站长
2022/09/14
5.1K0
windows环境下用c++实现socket编程
golang使用原始套接字构造UDP包
RAW SOCKET 介绍 TCP/IP协议中,最常见的就是原始(SOCKET_RAW)、tcp(SOCKET_STREAM)、udp(SOCKET_DGRA)三种套接字。原始套接字能够对底层传输进行控制,允许自行组装数据包,比如修改本地IP,发送Ping包,进行网络监听。这里不做详细介绍,要了解更多可以网上自己查询。 实现 这里先看IP头结构: 其中16位总长度包括IP头长度和数据的长度,8位协议填写17,因为UDP协议类型为17。这里要说明一下IP头中的首部校验,这个值只校验IP头部,不包含数据。 这里
李海彬
2018/03/26
3.4K0
第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
8110
第8章 基本UDP套接字编程
网络编程(二).UDP
返回值:>0 返回读入的字节数; ==0 连接已中止; <0 返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码
franket
2021/09/15
6560

相似问题

UDP套接字上的recvfrom()返回-1,但WSAGetLastError()返回0

13

recvfrom()什么时候用UDP套接字返回0?

13

UDP和套接字,recvfrom()返回-1,资源暂时不可用

22

UDP套接字: recvfrom和接收地址

45

检查recvfrom()中的返回地址(C UDP套接字)

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文