[mw_shl_code=c,true]//TCP Client 测试
void tcp_client_test(void)
{
struct tcp_pcb *tcppcb; //定义一个TCP服务器控制块
struct ip_addr rmtipaddr; //远端ip地址
u8 *tbuf;
u8 key;
u8 res=0;
u8 t=0;
u8 connflag=0; //连接标记
// tcp_client_set_remoteip();//先选择IP
tbuf=mem_malloc(200); //申请内存
if(tbuf==NULL)return ; //内存申请失败了,直接退出
tcppcb=tcp_new(); //创建一个新的pcb
if(tcppcb) //创建成功
{
// IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);
IP4_ADDR(&rmtipaddr,192,168,1,104);
// tcp_bind(tcppcb, IP_ADDR_ANY, 1000);
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected); //连接到目的地址的指定端口上,当连接成功后回调tcp_client_connected()函数
}else res=1;
while(res==0)
{
if(1)//,发送数据
{
tcp_client_flag|=1<<7;//标记要发送数据
}
if(tcp_client_flag&1<<6)//是否收到数据?
{
tcp_client_flag&=~(1<<6);//标记数据已经被处理了.
}
if(tcp_client_flag&1<<5)//是否连接上?
{
if(connflag==0)
{
connflag=1;//标记连接了
}
}else if(connflag)
{
connflag=0; //标记连接断开了
}
lwip_periodic_handle();
soft_delay(2);
t++;
if(t==200)
{
if(connflag==0&&(tcp_client_flag&1<<5)==0)//未连接上,则尝试重连
{
// tcp_client_connection_close(tcppcb,0);//关闭连接
tcppcb=tcp_new(); //创建一个新的pcb
if(tcppcb) //创建成功
{
if(tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected)==0)//连接到目的地址的指定端口上,当连接成功后回调tcp_client_connected()函数
break;
}
}
t=0;
}
}
// tcp_client_connection_close(tcppcb,0);//关闭TCP Client连接
mem_free(tbuf);
} [/mw_shl_code]
一直抓到下面这些包
貌似是握手失败 |