|
以下面任务为例子。执行了break后。调度器怎么在调用该任务。能否直接执行socket(); 这个函数。 还是和回到上次切换的入口。
while(1)
{
socket();
bind();
listen();
while(1)
{
//非阻塞加入select(),阻塞方式直接调用accept();
connectFd = accept( sockFd, (struct sockaddr *)&cltAddr, &len );
//接下来看你是先收数据recv()还是先发数据send()
while(1)
{ //直接调用recv也是阻塞方式,要用非阻塞方式,必须加入到select()中
recvNum = recv( connectFd, tcpBuf, 20, 0 );
if ( recvNum <= 0 )
{
break;
}
sendNum = send( connectFd, tcpBuf, 20, 0 );
OSTimeDly(100);
}
lwip_close(connectFd);//close()后直接返回到accept即可,不需要重新绑定与侦听
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|