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

SugarHosts糖果主机圣诞节促销 美国/香港虚拟主机低至6折

SugarHosts 糖果主机商我们算是比较熟悉的,早年学会建站的时候开始就用的糖果虚拟主机,目前他们家还算是为数不多提供虚拟主机的商家,有提供香港、美国、德国等虚拟主机机房。香港机房CN2速度比较快,美国机房有提供优化线路和普通线路适合外贸业务。德国欧洲机房适合欧洲业务的虚拟主机。糖果主机商一般是不会发布黑五活动的,他们在圣圣诞节促销活动是有的,我们看到糖果主机商发布的圣诞节促销虚拟主机低至6折...

ZJI:韩国BGP+CN2线路服务器,国内三网访问速度优秀,8折优惠码每月实付440元起

zji怎么样?zji最近新上韩国BGP+CN2线路服务器,国内三网访问速度优秀,适用8折优惠码zji,优惠后韩国服务器最低每月440元起。zji主机支持安装Linux或者Windows操作系统,会员中心集成电源管理功能,8折优惠码为终身折扣,续费同价,全场适用。ZJI是原Wordpress圈知名主机商:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服...

IMIDC日本多IP服务器$88/月起,E3-123x/16GB/512G SSD/30M带宽

IMIDC是一家香港本土运营商,商家名为彩虹数据(Rainbow Cloud),全线产品自营,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非等地机房,CN2网络直连到中国大陆。目前主机商针对日本独立服务器做促销活动,而且提供/28 IPv4,国内直连带宽优惠后每月仅88美元起。JP Multiple IP Customize...

recvfrom为你推荐
strcatc语言,怎么使用 strcat字符串连接函数,程序如图。元数据管理四大管理是什么httpsessionhttpsession 和cookie实现的会话跟踪有什么区别溢出隐藏关于CSS样式的问题,怎么可以让div的内容自动换行,溢出隐藏,还要加省略号?oncontextmenuoncontextmenu="return false"是什么意思网关和路由器的区别网关和路由器有什么区别备忘录模式为什么我的华为手机界面总是有个框框在备忘录上面spawningVC中Error spawning cl.exe错误的解决方法.imqq官网中国v家官网网址51信用卡论坛51信用卡贷了1200 现在还不上怎么办
免费申请域名和空间 国外永久服务器 awardspace 42u机柜尺寸 绍兴高防 日本bb瘦 阿里校园 免费活动 南通服务器 linux服务器维护 免费申请个人网站 卡巴斯基免费试用 yundun 测试网速命令 酷锐 标准机柜 reboot linuxvi byebyelove 电脑主机打不开 更多