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)); 举个栗子而已

CloudServer:$4/月KVM-2GB/50GB/5TB/三个数据中心

CloudServer是一家新的VPS主机商,成立了差不多9个月吧,提供基于KVM架构的VPS主机,支持Linux或者Windows操作系统,数据中心在美国纽约、洛杉矶和芝加哥机房,都是ColoCrossing的机器。目前商家在LEB提供了几款特价套餐,最低月付4美元(或者$23.88/年),购买更高级别套餐还能三个月费用使用6个月,等于前半年五折了。下面列出几款特别套餐配置信息。CPU:1cor...

搬瓦工:香港PCCW机房即将关闭;可免费升级至香港CN2 GIA;2核2G/1Gbps大带宽高端线路,89美元/年

搬瓦工怎么样?这几天收到搬瓦工发来的邮件,告知香港pccw机房(HKHK_1)即将关闭,这也不算是什么出乎意料的事情,反而他不关闭我倒觉得奇怪。因为目前搬瓦工香港cn2 GIA 机房和香港pccw机房价格、配置都一样,可以互相迁移,但是不管是速度还是延迟还是丢包率,搬瓦工香港PCCW机房都比不上香港cn2 gia 机房,所以不知道香港 PCCW 机房存在还有什么意义?关闭也是理所当然的事情。点击进...

webhosting24:€28/年,日本NVMe3900X+Webvps

webhosting24决定从7月1日开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,当然前提是价格依旧不变。目前来看,国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),这样的日本VPS还是有相当大的性价比的。官方网站:https://www.webhosting...

recvfrom为你推荐
onboardon board是什么意思?showwindowC#中showwindow控件在哪里??知识库管理系统知识库管理软件与档案管理软件有什么区别oncontextmenu如何禁用ImageButton的右键?oracle索引Oracle中有多少种索引类型网页微信客户端手机微信客户端怎么打开网页spawning为什么编译和运行vc++ 时会出现Error spawning c1.exe 的错误弹幕网站求弹幕网邀请码!cf加速器玩cf ping高用什么加速器比较好jsindexofjavascript 中indexof 的用法
域名空间 国外主机空间 域名大全 新秒杀 回程路由 天猫双十一抢红包 hostker web服务器安全 东莞服务器 万网空间购买 双线asp空间 架设邮件服务器 华为云建站 金主 群英网络 阿里dns 江苏双线 apnic hostease 美国asp空间 更多