被遗忘的角落——但必须要搞清楚!(可加分)
在socket编程中,经常会用到send(),recv(),sendto(),recvfrom()这些函数。
它们的参数有一个共同点,就是都包含一个指向缓冲区的指针,和该缓冲区长度两项。
例如:int recvfrom(SOCKET s,
char FAR* buf,
int len,
int flags,
struct sockaddr FAR *from,
int FAR *fromlen
);
中的参数2和3.
经常使用也没问题,但最近做一个程序时,buf定义为一个结构体指针,比Len的长度小,
就出现了系统错误。当buf指向的结构体长度大于len时,正常执行。
我在想:
到底这两个参数之间有什么关系?在平时做程序时,这个BUF可以设定为任何形式的指针
(指向一个字节,一个数组,一个结构体等等),难道它只是标志一下缓冲区的起始位置??并没有大小限制??len只是起一个长度限制??如果这样,len和这个指针所指向
的对象的大小存在什么要求??
望高手明示!!!