本帖最后由 12778298 于 2018-1-12 15:39 编辑
switch(getSn_SR(SOCK_TCPS))
{
case SOCK_CLOSED:
socket(SOCK_TCPS ,Sn_MR_TCP,local_port,Sn_MR_ND);
printf("打开socket");
break;
case SOCK_INIT:
listen(SOCK_TCPS);
printf("监听");
break;
case SOCK_ESTABLISHED:
printf("L");
if(getSn_IR(SOCK_TCPS) & Sn_IR_CON)
{
setSn_IR(SOCK_TCPS, Sn_IR_CON);
}
len=getSn_RX_RSR(SOCK_TCPS);
if(len>0)
{
recv(SOCK_TCPS,buff,len);
printf("%d",len);
}
break;
case SOCK_CLOSE_WAIT:
printf("关闭");
close(SOCK_TCPS);
break;
}
IINCHIP_WRITE(Sn_KPALVTR(0),0X01);
我在每个状态都有一个printf。(串口助手显示出来的)
现在又发现一个问题,我网络调试助手关闭连接,程序输出“关闭、打开socket、监听”,
然后我放一长段时间(半个小时),又出来一“打开socket、监听”。用网络调试助手也连不上了。
为什么在上一个socket还没有关闭下,又打开监听了,还连不上了。
总结:在监听的时候,又打开了一次socket然后监听。case的值读取错误了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>