当前位置:首页>开发>正文

如何调用recvfrom函数中 send sendto recv recvfrom有什么区别

2023-04-15 15:21:34 互联网 未知 开发

 如何调用recvfrom函数中 send sendto recv recvfrom有什么区别

如何调用recvfrom函数中

struct sockaddr_in address
int address_len = sizeof(address)

recvfrom(socket, buffer, length, 0, (struct sockaddr *)&address, &address_len )

send sendto recv recvfrom有什么区别

send sendto recv recvfrom有什么区别
一般情况下:
send(),recv()用于TCP,sendto()及recvfrom()用于UDP

但是send(),recv()也可以用于UDP,sendto()及recvfrom()也可以用于TCP

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

1、len是指缓冲区大小,就是第二个参数的长度。
Length of the data in buf, in bytes.
2、sendto中的是目的套接字结构的尺寸,只是标识一下to的结构所占的长度,
主要是因为弱类型char*需要长度,目标并不关心必须是否sockaddr_in结构。
指针的形式,是为了获取目标套接字地址的尺寸,也是为了能够进行弱类型解析。
协议本身是不限定必须使用sockaddr_in结构的,但是windows编程中一般都是用sockaddr_in

recvfrom()的最后一个参数问题

这个就看socket 的声明吧, 都这么做没办法, 这个确实很蠢。

问题2 不可以

sizeof(struct sockaddr) 对于程序来说就是个常数, 你能用 &2 来代替指向2的指针么,这个不行,你说的就不行。