关于tcp连接的问题

2019-07-24 13:23发布

        if(tcppcb)                        //′′½¨3é1|
        {
                IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);
                tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);  //ᬽóμ½Ä¿μÄμØÖ·μÄÖ¸¶¨¶Ë¿úéÏ,μ±á¬½ó3é1|oó»Øμ÷tcp_client_connected()oˉêy
        }else res=1;
        while(res==0)
        {
                key=KEY_Scan(0);
                if(key==WKUP_PRES)break;
                if(key==KEY0_PRES)//KEY0°′ÏÂáË,·¢Ëíêy¾Y
                {
                        tcp_client_flag|=1<<7;//±ê&#188;&#199;òa·¢&#203;íêy&#190;Y
                }
                if(tcp_client_flag&1<<6)//ê&#199;·&#241;ê&#213;μ&#189;êy&#190;Y?
                {
                        LCD_Fill(30,250,lcddev.width-1,lcddev.height-1,WHITE);//&#199;&#229;é&#207;ò&#187;′&#206;êy&#190;Y
                        LCD_ShowString(30,250,lcddev.width-30,lcddev.height-230,16,tcp_client_recvbuf);//&#207;&#212;ê&#190;&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y               
                        tcp_client_flag&=~(1<<6);//±ê&#188;&#199;êy&#190;Yò&#209;&#190;-±&#187;′|àíá&#203;.
                }
                if(tcp_client_flag&1<<5)//ê&#199;·&#241;á&#172;&#189;óé&#207;?
                {
                        LCD_ShowString(30,210,lcddev.width-30,lcddev.height-190,16,"STATUS:Connected   ");//ìáê&#190;&#207;&#251;&#207;¢               
                        POINT_COLOR=RED;
                        LCD_ShowString(30,230,lcddev.width-30,lcddev.height-190,16,"Receive Data:");//ìáê&#190;&#207;&#251;&#207;¢               
                        POINT_COLOR=BLUE;//à&#182;é&#171;×&#214;ì&#229;
                }else if((tcp_client_flag&1<<5)==0)
                {
                        LCD_ShowString(30,210,190,16,16,"STATUSisconnected");
                        LCD_Fill(30,230,lcddev.width-1,lcddev.height-1,WHITE);//&#199;&#229;&#198;á
                }
                lwip_periodic_handle();
                delay_ms(2);
                t++;
                if(t==200)
                {
                        if((tcp_client_flag&1<<5)==0)//&#206;′á&#172;&#189;óé&#207;,&#212;ò3¢ê&#212;&#214;&#216;á&#172;
                        {
                                tcp_client_connection_close(tcppcb,0);//1&#216;±&#213;á&#172;&#189;ó
                                tcppcb=tcp_new();        //′′&#189;¨ò&#187;&#184;&#246;D&#194;μ&#196;pcb
                                if(tcppcb)                        //′′&#189;¨3é1|
                                {
                                        tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);//á&#172;&#189;óμ&#189;&#196;&#191;μ&#196;μ&#216;&#214;·μ&#196;&#214;&#184;&#182;¨&#182;&#203;&#191;úé&#207;,μ±á&#172;&#189;ó3é1|oó&#187;&#216;μ÷tcp_client_connected()oˉêy
                                }
                        }
                        t=0;
                        LED0=!LED0;
                }               
        }
        tcp_client_connection_close(tcppcb,0);//1&#216;±&#213;TCP Clientá&#172;&#189;ó
        LCD_Clear(WHITE);
        POINT_COLOR = RED;
        LCD_ShowString(30,30,200,16,16,"Explorer STM32F4");
        LCD_ShowString(30,50,200,16,16,"TCP Client Test");
        LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
       
        POINT_COLOR=BLUE;
        LCD_ShowString(30,90,200,16,16,"Connect break£&#161;");  
        LCD_ShowString(30,110,200,16,16,"KEY1:Connect");
        myfree(SRAMIN,tbuf);
}


有个疑问就是tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected); 这个回调函数是在  while(res==0)外面创建的,创建完就进while(res==0),但是在while里面没看到有回调的字眼呀,请问下是怎样执行回调的呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
不良苏
1楼-- · 2019-07-24 16:38
正点原子
2楼-- · 2019-07-24 17:37
帮顶
花花世界丶
3楼-- · 2019-07-24 23:15
冒泡,帮顶

一周热门 更多>