w5500 PHY和作为TCPCLIENT 断线重连问题请教?

2020-01-01 17:49发布

各位好:
        自己做了一块STM32+W5500 板,有两个问题请教一下
        1 , 发现如果不插网线的话,板子的程序好像允许不下去,插入网线后,程序继续执行,好像在网络初始化的时候,会等待网线状态?
        2 ,做了一个tcp client 客户端,如果TCP服务端先打开,在执行程序,tcp client 能连接上,如果服务端断开重新打开,就连接不上?网络断了 如何重连?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
BloathX
1楼-- · 2020-01-01 23:32
1:没有这一说,你的程序没处理好异常吧
2:在断开后,你的socket状态就改变了,从连接到了初始化,你再发一条连接命令就行了
embeddev_1
2楼-- · 2020-01-02 04:56
 精彩回答 2  元偷偷看……
lsx007
3楼-- · 2020-01-02 07:32
楼主 你没有看代码就来问问题
WXF_mabg
4楼-- · 2020-01-02 07:39
BloathX 发表于 2014-11-20 19:09
1:没有这一说,你的程序没处理好异常吧
2:在断开后,你的socket状态就改变了,从连接到了初始化,你再发 ...

第一条 是我代码的问题 很抱歉各位 第二条 服务端断开了以后,端口状态发生变化了,但是重新connect 连接不上
WXF_mabg
5楼-- · 2020-01-02 11:18
那位可以给我个服务端重新连接的程序?
WXF_mabg
6楼-- · 2020-01-02 13:35
switch(getSn_SR(SOCK_LOC))
        {
                case SOCK_INIT:
                        connect(SOCK_LOC , pc_ip ,6001);/*在TCP模式下向服务器发送连接请求*/
                        break;
                case SOCK_ESTABLISHED:
                        if( getSn_IR(SOCK_LOC) & Sn_IR_CON )
                 {
                    setSn_IR(SOCK_LOC, Sn_IR_CON);/*Sn_IR的第0位置1*/
                  }
                        len = getSn_RX_RSR(SOCK_LOC);/*len为已接收数据的大小*/
                        break;
                case SOCK_CLOSE_WAIT:   
                        disconnect(SOCK_LOC)                       
                        break;
                case SOCK_CLOSING:/*socket关闭*/
                        close(SOCK_LOC) ;
                        break ;
                case SOCK_CLOSED:/*socket关闭*/
                        socket(SOCK_LOC,Sn_MR_TCP,anyport++,0) ;
      break;
                default:
                        break;
        }// end of switch

请问上面的处理流程对否 请大侠指导?另外配置好 SO_KEEPALIVEAUTO 对tcp服务端断开这种情况,是否有作用?

一周热门 更多>