lwip源碼下載
① 如何查看lwip源碼的當前版本
在Linux內核的頂層Makefile中,扒昌頂端就蠢蔽有,格式為 VERSION = 3 PATCHLEVEL = 0 SUBLEVEL = 8 EXTRAVERSION = NAME = Sneaky Weasel 以上的版春檔扒本號就是3.08
② 求解LWIP 1.4.0源碼里#define TCP_PCB_COMMON(type)
如此做只是將常用的代碼,以宏拆殲的形式定義出來,李御友這樣代碼簡潔,也便於修改,只是閱讀起來有點困難。
不同於封裝成函數,執行時沒哪槐有開銷;因為在預編譯階段編譯器就會幫你把宏替換成了c代碼。
③ (急)IP協議源代碼(C++)中的轉發函數誰能幫忙解釋一下
PERF_START 轉發開始,初始化。
ip_forward() 轉發函數, 轉發一個數據包。
ip_route() 找通向目的地的路線。
(struct ip_addr *)&(iphdr->dest 目的地轉成ip_addr結構。如果 找到路線,送返 結構 netif,否則 送返 NULL。
if((ip_route ...NULL){} 如果送返 NULL,也就是沒找到路線,則做 {...}
找到路線, 但是 if(netif == inp) ,表示同一個數據包,已到達,不必轉發。
IPH_TTL_SET(iphdr, IPH_TTL(iphdr) - 1); 如果ttl == 0,為防止數據包不斷在 IP 互聯網路上永不終止地循環,減小 數據包 生存時間TTL 1,icmp..是否執行封包回顯應答。
IPH_CHKSUM_SET 更新 IP checksum 檢查,根據條件決定是否+1。
DEBUGF -- 查錯時輸出的信息
#ifdef IP_STATS ... #endif
如果定義了IP_STATS (IP 開始) 則...
PERF_STOP() 終止 轉發
④ gethostbyname()的源碼
struct hostent* gethostbyname(const char *name)
{
err_t err;
ip_addr_t addr;
/* buffer variables for lwip_gethostbyname() */
HOSTENT_STORAGE struct hostent s_hostent;
HOSTENT_STORAGE char *s_aliases;
HOSTENT_STORAGE ip_addr_t s_hostent_addr;
HOSTENT_STORAGE ip_addr_t *s_phostent_addr[2];
/* query host IP address */
err = netconn_gethostbyname(name, &addr);
if (err != ERR_OK) {
LWIP_DEBUGF(DNS_DEBUG, (lwip_gethostbyname(%s) failed, err=%d
, name, err));
h_errno = HOST_NOT_FOUND;
return NULL;
}
⑤ 有用STM32F107+lwip 做TCP客戶端的嗎
我用過stm32F107乙太網通訊,單片機作為叢昌旦客戶端與PC機迅好服務端通訊, 需要移植Lwip協議棧,Lwip協滲擾議棧提供了UDP、TCP、Socket 的API函數,使用時直接調用;建議你先看看此開發板自帶的常式源碼,裡面用了Lwip實現了telnet、http、ftp通訊。如果你沒有的話,我可以發給你。 至於你說的其他兩個,我沒用過,抱歉。你可以看看常式源碼里有沒有相關的使用例子。