我的程序是参考战舰上面改过来的:按复位键 程序连接两次可以连接上,如果断电重连 就连不上,调试助手 显示1035错误
硬件没问题 因为运行 其他程序 上电和复位是一样的
void tcp_client_init(void) //服务器初始化函数
{
struct tcp_client_state* ts;
struct ip_addr ipaddr;
err_t ret_err;
IP4_ADDR(&ipaddr,192,168,0,122); //目标IP
tcp_client_pcb = tcp_new(); /* 建立通信的 TCP 控制块(Clipcb) */
tcp_bind( tcp_client_pcb,IP_ADDR_ANY,TCP_CLIENT_PORT); /* 绑定本地 IP 地址和端口号 不绑定也可以运行 端口号自己分配 */
if(tcp_client_pcb!=NULL)
{ printf("初始化进入");
ts = mem_malloc(sizeof(struct tcp_client_state)); //申请内存
tcp_arg(tcp_client_pcb, ts); //将程序的协议控制块的状态传递给多有的回调函数
tcp_connect(tcp_client_pcb,&ipaddr,6000,tcp_client_connect); //连接函数 tcp_client_accept成功连接到主机调用
tcp_recv(tcp_client_pcb, tcp_client_recv); //指定连接接收到新的数据之后将要调用的回调函数
tcp_poll(tcp_client_pcb, tcp_client_poll, 2); //轮询函数 发送数据 时间为2/2=1
}
}
检测状态在主程序中 5S检测一次,connect_net是连接状态标志位
if(connect_net==1)
{
printf("开始重新连接 ");
tcp_closed();
tcp_client_init();
if(connect_net==0)
{
printf("重新连接 ");
}
|