WinSocket中调用recvfrom()函数时返回-1

1、问题描述

        在没有网络数据的情况下执行recvfrom()函数,程序没有进入阻塞等待,而是直接返回-1。上网搜索相关问题的解决方法,主要集中在recvfrom()函数的参数没有匹配。

2、解决方法

原代码:

struct sockaddr address;
int len=0;
int iResult = recvfrom(socket,data,sizeof(data),0,&address,&len);

解决方法:(int len = sizeof(address)或int len;)

struct sockaddr address;
int len = sizeof(address);
//int len;
recvfrom(socket,data,sizeof(data),0,&address,&len);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Winsock模块是指在Windows操作系统用于网络编程的一种库文件。Winsock模块提供了一系列的API函数,使开发人员能够在Windows平台上使用TCP/IP协议栈进行网络通信。 Winsock模块的主要功能包括创建和管理网络套接字,实现基于TCP和UDP的数据传输,以及处理网络错误和异常情况。通过Winsock模块,开发人员可以方便地实现客户端和服务器端的网络通信。 在使用Winsock模块进行网络编程,开发人员需要包括以下几个主要步骤: 1. 初始化Winsock库:在使用Winsock模块之前,需要先初始化Winsock库,以便加载库文件并准备使用网络功能。 2. 创建套接字:可以使用Winsock模块的API函数创建一个套接字,并指定套接字的类型(如TCP或UDP)和协议(如IPv4或IPv6)。 3. 绑定套接字:将套接字绑定到一个具体的IP地址和端口号,以便可以监听客户端的连接或发送数据。 4. 监听连接:当创建服务器端应用程序,可以使用Winsock模块的API函数监听客户端的连接请求,等待客户端连接并接受连接。 5. 发送和接收数据:通过使用Winsock模块的API函数,可以实现数据的发送和接收。对于基于TCP的通信,使用套接字的send和recv函数进行数据的发送和接收;对于基于UDP的通信,使用套接字的sendto和recvfrom函数进行数据的发送和接收。 6. 关闭套接字和释放资源:当网络通信结束,需要使用Winsock模块的API函数关闭套接字,并释放Winsock库占用的资源。 总之,Winsock模块是Windows平台上进行网络编程的重要工具,它为开发人员提供了方便的API函数,使得网络通信的实现更加简单和可靠。通过Winsock模块,开发人员可以实现各种类型的网络应用程序,如网络游戏、网络聊天工具等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值