int nZero=0;
setsockopt(socket,SOL_S0CKET,SO_RCVBUF,(char *)&nZero,sizeof(nZero));如上代码:
如果我设置了某个socket的接收缓冲区为0后,对方发送了数据,在肯定有数据到达后,我用recvfrom()接收数据为什么还可以接收得到,因为接收缓冲不是设置为0了吗,那我在没用recvfrom()函数之前这些数据存放在那里呢???不解!!!请高手解答。我上面是用UDP测试的,那TCP呢,会不会出现同样的情况???
setsockopt(socket,SOL_S0CKET,SO_RCVBUF,(char *)&nZero,sizeof(nZero));如上代码:
如果我设置了某个socket的接收缓冲区为0后,对方发送了数据,在肯定有数据到达后,我用recvfrom()接收数据为什么还可以接收得到,因为接收缓冲不是设置为0了吗,那我在没用recvfrom()函数之前这些数据存放在那里呢???不解!!!请高手解答。我上面是用UDP测试的,那TCP呢,会不会出现同样的情况???
你说这是将接收缓冲区设置为0的语句么???
(char *)&nZero --》nZero有地址阿。没错
sizeof(nZero)--》nZero有大小阿。sizeof(nZero) = 4(如果是32位机器的话)。
setsockopt(socket,SOL_S0CKET,SO_RCVBUF,(char *)&nZero,sizeof(nZero));
是把缓冲区清零???
是我理解错了还是楼上说错了???
我的理解是把接收缓冲区大小设置为0。
不懂就不要在这里乱说误导别人
你将接收缓冲设为0后。客户机发送消息,
服务器端:
在你没有用recvfrom指定用户缓冲区之前,服务器拒收数据,导致客户端重发数据。
一直到你用recvfrom指定用户缓冲区之后,此次发送才算完成.
danyueer(淡月儿:清水上的足音) 好象说错了
大家说 lonenomad(流浪汉) 说得对吗?
高手出面吧!