初级会员
- 积分
- 178
- 金钱
- 178
- 注册时间
- 2016-7-1
- 在线时间
- 28 小时
|
我是用原子的程序,只是改成了HAL库,电脑做服务器,开发板做客户端,
void tcp_client_test(void)
{
struct tcp_pcb *tcppcb; //¶¨òåò»¸öTCP·tÎñÆ÷¿ØÖÆ¿é
extern ip4_addr_t rmtipaddr; //Ô¶¶ËipμØÖ· //这个定义和标准库的不一样 吗,这是标准库的 struct ip_addr rmtipaddr; //Ô¶¶ËipμØÖ·
uint8_t key;
uint8_t res=0;
uint8_t t=0;
uint8_t connflag=0; //ᬽó±ê¼Ç
tcp_client_set_remoteip();//ÏèÑ¡ÔñIP
printf("KEY0:Send data\r\n");
printf("KEY_UPuit\r\n");
printf("Local IP:%d.%d.%d.%d\r\n",IP_ADDRESS[0],IP_ADDRESS[1],IP_ADDRESS[2],IP_ADDRESS[3]);
printf("Remote IP:%d.%d.%d.%d\r\n",remoteip[0],remoteip[1],remoteip[2],remoteip[3]);//远端ip
printf("Remote Port:%d\r\n",TCP_CLIENT_PORT);//端口号
printf("STATUSisconnected\r\n");
tcppcb=tcp_new(); //创建一个控制块
if(tcppcb) //
{//程序到这就是连不上
IP4_ADDR(&rmtipaddr,remoteip[0],remoteip[1],remoteip[2],remoteip[3]);
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected); //连接到服务器
}else res=1;
while(res==0)
{
key=KEY_Scan(0);
if(key==WKUP_PRES)break;
if(key==KEY0_PRES)//KEY0°′ÏÂáË,·¢Ëíêy¾Y
{
tcp_client_usersent(tcppcb); //·¢Ëíêy¾Y
}
if(tcp_client_flag&1<<6)//êÇ·ñêÕμ½êy¾Y?
{
printf("%d",tcp_client_recvbuf);//ÏÔê¾½óêÕμ½μÄêy¾Y
tcp_client_flag&=~(1<<6);//±ê¼Çêy¾YòѾ-±»′|àíáË.
}
if(tcp_client_flag&1<<5)//êÇ·ñᬽóéÏ?
{
printf("connflag=%d",connflag);
if(connflag==0)
{
printf("STATUS:Connected \r\n ");//ìáê¾ÏûÏ¢
printf("Receive Data:\r\n");//ìáê¾ÏûÏ¢
connflag=1;//±ê¼ÇᬽóáË
}
}else if(connflag)
{
printf("STATUSisconnected");
connflag=0; //±ê¼Çᬽó¶Ï¿aáË
}
lwip_periodic_handle();
HAL_Delay(2);
t++;
if(t==200)
{
if(connflag==0&&(tcp_client_flag&1<<5)==0)//Î′ᬽóéÏ,Ôò3¢êÔÖØá¬
{
tcp_client_connection_close(tcppcb,0);//1رÕᬽó
tcppcb=tcp_new(); //′′½¨ò»¸öDÂμÄpcb
if(tcppcb) //′′½¨3é1|
{
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);//ᬽóμ½Ä¿μÄμØÖ·μÄÖ¸¶¨¶Ë¿úéÏ,μ±á¬½ó3é1|oó»Øμ÷tcp_client_connected()oˉêy
}
}
t=0;
LED0;
}
}
tcp_client_connection_close(tcppcb,0);//1رÕTCP Clientᬽó
//myfree(SRAMIN,tbuf);
}
|
|