Chinaunix

标题: 客户端connect成功之后,立刻发送数据 [打印本页]

作者: wishel    时间: 2009-06-15 15:23
标题: 客户端connect成功之后,立刻发送数据
client connect成功(3次握手),发送数据。但此时server还未调用accept(忙于别的事),数据到了server的ip层后,怎么办?丢弃?
作者: hightman    时间: 2009-06-15 15:31
你发送数据又不一定成功, send/write 要判断返回值及errno
作者: bobozhang    时间: 2009-06-15 15:34
不会丢弃
作者: alexhappy    时间: 2009-06-15 15:34
原帖由 wishel 于 2009-6-15 15:23 发表
client connect成功(3次握手),发送数据。但此时server还未调用accept(忙于别的事),数据到了server的ip层后,怎么办?丢弃?

不会的,就放在缓冲区中,当server调用accpet,recv之后便可读取此数据了
作者: ssafa    时间: 2009-06-15 15:37
应该在缓冲区里面
作者: xinglp    时间: 2009-06-15 18:13
不会丢弃,这个不用担心的
作者: gawk    时间: 2009-06-16 00:05
发的多,缓冲区会满的
作者: bobozhang    时间: 2009-06-16 09:34
缓冲区满了你再send就会阻塞或则得到EAGAIN错误,这种情况跟对方accept后取数据速度过慢是一样的
作者: wishel    时间: 2009-06-16 14:07
原帖由 hightman 于 2009-6-15 15:31 发表
你发送数据又不一定成功, send/write 要判断返回值及errno


一般会成功的吧,发到本地socket缓冲区就成功返回,刚connect后缓冲区是空的。
作者: wishel    时间: 2009-06-16 14:14
原帖由 alexhappy 于 2009-6-15 15:34 发表

不会的,就放在缓冲区中,当server调用accpet,recv之后便可读取此数据了


留在内核缓冲区里么?
这时候ip层向上送,但找不到对应接收的socket,就暂时不动,等accept之后再把数据送到新生的socket的接收缓冲?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2