  | 
      
        
          11樓
          巨大八爪鱼
          2017-3-20 10:11
          
          
           
         
        程序运行时输出: Hello World! 进入主循环... tpcb->snd_buf=2682, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 tpcb->snd_buf=2667, err0=0, err1=0, err2=0, err3=0 并且网页也能正常打开。
  
       | 
    
    
        | 
      
        
          12樓
          巨大八爪鱼
          2017-3-20 18:27
          
          
           
         
        【cnt变量自加测试】 #include <string.h> #include "lwip/tcp.h" // 一般情况下需要包含的头文件
  #define STR_AND_SIZE(str) (str), strlen(str)
  char len[10]; // 存放HTML内容的长度 char str[200]; // 存放HTML内容
  err_t http_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err) {     char name[100];     char *pstr;     uint8_t i = 0;     static uint32_t cnt = 0;          if (p != NULL)     {         // 提取页面名称         pstr = (char *)p->payload;         while (*pstr++ != ' ');         while (*pstr != ' ')             name[i++] = *pstr++;         name[i] = '\0'; // 不要忘了结束name字符串         tcp_recved(tpcb, p->tot_len);                  // 生成HTML内容         sprintf(str, "<meta charset=\"gb2312\"><title>获取网页名称</title><div style=\"font-family:Arial\"><b>请求的网页文件名称是: </b>%s</div><div style=\"color:blue\"><b>cnt</b>=%d</div>", name, cnt);         cnt++;                  sprintf(len, "%d", strlen(str)); // HTML内容的长度         tcp_write(tpcb, STR_AND_SIZE("HTTP/1.1 200 OK\r\nContent-Length: "), TCP_WRITE_FLAG_MORE);         tcp_write(tpcb, STR_AND_SIZE(len), TCP_WRITE_FLAG_MORE);         tcp_write(tpcb, STR_AND_SIZE("\r\nKeep-Alive: timeout=5, max=100\r\nConnection: Keep-Alive\r\nContent-Type: text/html\r\n\r\n"), TCP_WRITE_FLAG_MORE);         tcp_write(tpcb, STR_AND_SIZE(str), 0); // 发送HTML内容         pbuf_free(p);     }     return ERR_OK; }
  err_t http_accept(void *arg, struct tcp_pcb *newpcb, err_t err) {     tcp_recv(newpcb, http_recv);     return ERR_OK; }
  void init_http(void) {     struct tcp_pcb *tpcb = tcp_new();     tcp_bind(tpcb, IP_ADDR_ANY, 80);     tpcb = tcp_listen(tpcb);     tcp_accept(tpcb, http_accept); }
  
       |