recvfromrecvfrom只能接收char* 的数据???那其他类型的怎么办??

recvfrom  时间:2021-07-16  阅读:()

如何调用recvfrom函数中

struct sockaddr_in address; int address_len = sizeof(address); recvfrom(socket, buffer, length, 0, (struct sockaddr *)&address, &address_len );

send和sendto的区别

endto可以在参数中指定发送的目标地址,send需要socket已建立连接,sendto可用于无连接的socket 对于有连接的socket,两者一样,sendto最后两个参数没用

关于sendto()和recvfrom()两个函数参数的疑?

1、len是指缓冲区大小,就是第二个参数的长度。

Length of the data in buf, in bytes. 2、sendto中的是目的套接字结构的尺寸,只是标识一下to的结构所占的长度, 主要是因为弱类型char*需要长度,目标并不关心必须是否sockaddr_in结构。

指针的形式,是为了获取目标套接字地址的尺寸,也是为了能够进行弱类型解析。

协议本身是不限定必须使用sockaddr_in结构的,但是windows编程中一般都是用sockaddr_in

recvfrom函数

recvfrom函数用于从(已连接)套接口上接收数据,并捕获数据发送源的地址。

  本函数用于从(已连接)套接口上接收数据,并捕获数据发送源的地址。

  对于SOCK_STREAM类型的套接口,最多可接收缓冲区大小个数据。

如果套接口被设置为线内接收带外数据(选项为SO_OOBINLINE),且有带外数据未读入,则返回带外数据。

应用程序可通过调用ioctlsocket()的SOCATMARK命令来确定是否有带外数据待读入。

对于SOCK_STREAM类型套接口,忽略from和fromlen参数。

  对于数据报类套接口,队列中第一个数据报中的数据被解包,但最多不超过缓冲区的大小。

如果数据报大于缓冲区,那么缓冲区中只有数据报的前面部分,其他的数据都丢失了,并且recvfrom()函数返回WSAEMSGSIZE错误。

  若from非零,且套接口为SOCK_DGRAM类型,则发送数据源的地址被复制到相应的sockaddr结构中。

fromlen所指向的值初始化时为这个结构的大小,当调用返回时按实际地址所占的空间进行修改。

  如果没有数据待读,那么除非是非阻塞模式,不然的话套接口将一直等待数据的到来,此时将返回SOCKET_ERROR错误,错误代码是WSAEWOULDBLOCK。

用select()或WSAAsynSelect()可以获知何时数据到达。

  如果套接口为SOCK_STREAM类型,并且远端“优雅”地中止了连接,那么recvfrom()一个数据也不读取,立即返回。

如果立即被强制中止,那么recv()将以WSAECONNRESET错误失败返回。

哪位大神帮解决一下啊?到底哪里不对啊?recvfrom返回值总是-1.

recvfrom 返回-1表示接收数据失败,一般有两种情况会失败,当接收缓冲区小于对方发送的数据时,缓冲区无法接收这个包,recvfrom失败,另外一种,传入的参数有问题,例如socketaddrlength,或者socket句柄有问题,这些都会直接返回-1,不会有任何阻塞

recvfrom只能接收char* 的数据???那其他类型的怎么办??

计算机都是以二进制存储数据的,无论什么数据类型你都当成是2进制的不就好了 例如一个char有sizeof(char)个字节,一个int有sizeof(int)个字节,假设前者是1字节,后者是4字节,我们只要用四个前者表示一个后者不就行了 具体怎么转换可以想嘛,数据类型皆同理,其实还有更方便的转换方法,就是直接用指针强制来,例如 typdef struct {int a;char b;bool c;} Data; char * buffer = malloc(sizeof(Data)); Data d; strncpy(buffer,(char*)&d,sizeof(Data)); 举个栗子而已

wordpress投资主题模版 白银黄金贵金属金融投资网站主题

wordpress投资主题模版是一套适合白银、黄金、贵金属投资网站主题模板,绿色大气金融投资类网站主题,专业高级自适应多设备企业CMS建站主题 完善的外贸企业建站功能模块 + 高效通用的后台自定义设置,简洁大气的网站风格设计 + 更利于SEO搜索优化和站点收录排名!点击进入:wordpress投资主题模版安装环境:运行环境:PHP 7.0+, MYSQL 5.6 ( 最低主机需求 )最新兼容:完美...

DiyVM:499元/月香港沙田服务器,L5630*2/16G内存/120G SSD硬盘/5M CN2线路

DiyVM是一家成立于2009年的国人主机商,提供的产品包括VPS主机、独立服务器租用等,产品数据中心包括中国香港、日本大阪和美国洛杉矶等,其中VPS主机基于XEN架构,支持异地备份与自定义镜像,VPS和独立服务器均可提供内网IP功能。商家VPS主机均2GB内存起步,三个地区机房可选,使用优惠码后每月69元起;独立服务器开设在香港沙田电信机房,CN2线路,自动化开通上架,最低499元/月起。下面以...

快云科技:香港沙田CN2云服务器低至29元/月起;美国高防弹性云/洛杉矶CUVIP低至33.6元/月起

快云科技怎么样?快云科技是一家成立于2020年的新起国内主机商,资质齐全 持有IDC ICP ISP等正规商家。云服务器网(yuntue.com)小编之前已经介绍过很多快云科技的香港及美国云服务器了,这次再介绍一下新的优惠方案。目前,香港云沙田CN2云服务器低至29元/月起;美国超防弹性云/洛杉矶CUVIP低至33.6元/月起。快云科技的云主机架构采用KVM虚拟化技术,全盘SSD硬盘,RAID10...

recvfrom为你推荐
row函数EXCEL 中的 ROW函数wmiprvsewmiprvse.exe能禁用吗rbf神经网络MATLAB工具箱里的RBF神经网络newrb是什么算法查字网衾字怎么读音是什么网关和路由器的区别路由器和网关有什么区别?jqlJQL JINQILIN注册过商标吗?还有哪些分类可以注册?editplus破解版手机的常用软件和ngage的破解版保留两位有效数字什么叫保留两位有效数字vipjrvipjr跟哒哒英语比,两家公司的区别在哪里?各自的特点有哪些?欢迎页面怎样取消“欢迎页面”?
查询ip 香港vps 免费申请域名 cloudstack bash漏洞 老左博客 圣诞促销 北京双线 南通服务器 重庆双线服务器托管 ca187 免费私人服务器 drupal安装 江苏双线服务器 闪讯官网 移动服务器托管 腾讯网盘 黑科云 移动王卡 privatetracker 更多