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

青云互联:香港安畅CN2弹性云限时首月五折,15元/月起,可选Windows/可自定义配置

青云互联怎么样?青云互联是一家成立于2020年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,目前提供有美国免费主机、香港主机、韩国服务器、香港服务器、美国云服务器,香港安畅cn2弹性云限时首月五折,15元/月起;可选Windows/可自定义配置,让您的网站高速、稳定运行。点击进入:青云互联官方网站地址青云互联优惠码:八折优惠码:ltY8sHMh (续费同价)青云互联香港云服务器活动...

10gbiz($2.36/月),香港/洛杉矶CN2 GIA线路VPS,香港/日本独立服务器

10gbiz发布了9月优惠方案,针对VPS、独立服务器、站群服务器、高防服务器等均提供了一系列优惠方面,其中香港/洛杉矶CN2 GIA线路VPS主机4折优惠继续,优惠后最低每月仅2.36美元起;日本/香港独立服务器提供特价款首月1.5折27.43美元起;站群/G口服务器首月半价,高防服务器永久8.5折等。这是一家成立于2020年的主机商,提供包括独立服务器租用和VPS主机等产品,数据中心包括美国洛...

Megalayer促销:美国圣何塞CN2线路VPS月付48元起/香港VPS月付59元起/香港E3独服月付499元起

Megalayer是新晋崛起的国外服务器商,成立于2019年,一直都处于稳定发展的状态,机房目前有美国机房,香港机房,菲律宾机房。其中圣何塞包括CN2或者国际线路,Megalayer商家提供了一些VPS特价套餐,譬如15M带宽CN2线路主机最低每月48元起,基于KVM架构,支持windows或者Linux操作系统。。Megalayer技术团队行业经验丰富,分别来自于蓝汛、IBM等知名企业。Mega...

recvfrom为你推荐
rbf神经网络rbf神经网络的输入参数个数有上限么最开放的浏览器用的最多的三个浏览器是?郭凡生馬云的簡介3Q网关和路由器的区别网关和路由器有什么区别民生电商陆金所、民生电商哪个更适合投资?smartupload为什么使用smartupload执行上传保存操作时用这句smart.save("upload")失败用smart.save("/upload")成功mediasRES代表什么意思什么是SOA什么是中子刀?您了解吗?toolstripWinOperationClass是什么来的,什么用酷源码怎样看源码下优酷视频
最便宜虚拟主机 花生壳免费域名 directspace googleapps 便宜建站 debian6 40g硬盘 权嘉云 gspeed 1g内存 100m独享 hdd ebay注册 阿里云免费邮箱 wordpress中文主题 lamp的音标 xuni 重庆联通服务器托管 windowsserver2012r2 ncp 更多