OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2511|回复: 3

关于tcp连接的问题

[复制链接]

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
510
金钱
510
注册时间
2015-11-13
在线时间
131 小时
发表于 2018-2-6 11:41:23 | 显示全部楼层 |阅读模式
5金钱
        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里面没看到有回调的字眼呀,请问下是怎样执行回调的呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
510
金钱
510
注册时间
2015-11-13
在线时间
131 小时
 楼主| 发表于 2018-2-6 11:41:39 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-2-19 23:59:10 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-2-12
在线时间
1 小时
发表于 2018-2-23 13:49:19 | 显示全部楼层
冒泡,帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 10:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表