回覆列表
  • 1 # 使用者4516221360564

    你的問題不是很詳細 如果是不知道位置:在LWIP的tcp_active_pcbs==tcp_active_pcbs->next 如果是非阻塞的方式執行: 現在的用法,還是用sys_thread_new建立的,在tcpclient中這樣處理的,但連線如果是server主動斷掉可以檢測到,但如果是其他原因,如網路錯誤之類的就檢測不到了。 intfd; FD_ZERO(&fdR); FD_SET(sock,&fdR); switch(select(sock+1,&fdR,NULL,NULL,&timeout)) { case-1: { lwip_close(sock); rt_free(recv_data); recv_data=RT_NULL; GPIOB->BSRR=GPIO_Pin_5;//滅燈 return0; } case0: break; default: { if(FD_ISSET(fd,&fd...你的問題不是很詳細 如果是不知道位置:在LWIP的tcp_active_pcbs==tcp_active_pcbs->next 如果是非阻塞的方式執行: 現在的用法,還是用sys_thread_new建立的,在tcpclient中這樣處理的,但連線如果是server主動斷掉可以檢測到,但如果是其他原因,如網路錯誤之類的就檢測不到了。 intfd; FD_ZERO(&fdR); FD_SET(sock,&fdR); switch(select(sock+1,&fdR,NULL,NULL,&timeout)) { case-1: { lwip_close(sock); rt_free(recv_data); recv_data=RT_NULL; GPIOB->BSRR=GPIO_Pin_5;//滅燈 return0; } case0: break; default: { if(FD_ISSET(fd,&fdR)) { intnread; ioctlsocket(fd,FIONREAD,&nread); if(nread==0) { //close lwip_close(sock); rt_free(recv_data); recv_data=RT_NULL; GPIOB->BSRR=GPIO_Pin_5;//滅燈 return0; } else { bytes_received=recv(sock,recv_data,1024,0); if(bytes_received==0) { //close lwip_close(sock); rt_free(recv_data); recv_data=RT_NULL; GPIOB->BSRR=GPIO_Pin_5;//滅燈 return0; } else { recv_data[bytes_received]="\0"; //*****資料解析******* if(Check_frame(recv_data)==1) { link((u8_t*)recv_data,sock); } } } } break; } }

  • 中秋節和大豐收的關聯?
  • 有人說火箭隊如果簽約安東尼,奪冠機率反而會降低,對此你怎麼看?