【程序】Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)

该程序是旧版本!最新版本为20220213版:
https://blog.csdn.net/ZLK1214/article/details/122915474

本程序所用的单片机型号为:STM32F103RE或STM32F407VE
本程序现已支持STM32H7系列单片机:https://blog.csdn.net/ZLK1214/article/details/121985112

已确认在20200208版的程序中,dhcpd.c含有大量的bug!下载代码后,请立即将工程中的dhcpd.c和dhcpd.h替换成下面文章中的内容。
https://blog.csdn.net/ZLK1214/article/details/122612684https://blog.csdn.net/ZLK1214/article/details/122612684复位引脚(PDN)应连接到STM32F1的PA15引脚或STM32F4的PD14引脚。不连接PDN引脚将导致固件无法下载!如果模块上有PDN和RESET两个引脚,只需要连接PDN引脚。因为模块上的RESET引脚是悬空的,根本就没有连到芯片上
晶振用的是8MHz,请注意检查自己的开发板,看看晶振是不是8MHz。如果是12MHz,在标准库程序中请修改system_stm32f10x.c或system_stm32f4xx.c文件,在HAL库程序中请修改common.c的clock_init函数。在F1单片机上是把PLL的倍频系数由9改成6(8×9=12×6),并在工程属性中定义HSE_VALUE=12000000

程序支持连接无密码的热点以及WEP、WPA-PSK和WPA2-PSK认证类型的热点,加密方式支持TKIP和AES。WEP加密类型仅支持添加一个密钥
程序还支持创建无密码的热点以及WPA-PSK和WPA2-PSK认证类型的热点,此时板子的IP地址默认为192.168.20.1(IPv4)和fd20::1(IPv6)
连接热点属于STA模式,创建热点属于μAP模式。这两个模式可以同时启用。如果在LWIP上配置了IP_FORWARD选项,并在STA模式所连的路由器上配置好路由表,那么连接了μAP热点的设备就可以上网,也就是“电脑--->88W8801--->路由器--->Internet”的模式(创建可以上网的热点的方法
如果热点名称包含中文,请注意中文字符的编码。比如笔者的中文名热点"一个WiFi"是用的UTF-8编码,程序里面应该写成"\xe4\xb8\x80\xe4\xb8\xaaWIFI"。也可以用记事本将c源文件以UTF-8编码格式保存,然后直接写"一个WiFi"这个字符串
另外,88W8801不支持Ad-Hoc点对点模式(88W8686支持)

用Keil5编写程序的时候,工程文件夹路径最好不要出现中文哦!不然代码提示可能会有问题
程序是裸机运行的,不带操作系统,运行最新的lwip-2.1.2协议栈
lwip2.1版本的压缩包(lwip-2.1.0.zip)中的src/netif文件夹下没有ethernetif.c了,那个文件是被移动到contrib-2.1.0.zip的examples/ethernetif文件夹下去了

sd8801_uapsta.c是WiFi模块的固件,上电运行时必须由单片机发送给WiFi模块运行
该固件数据非常大,为了节约程序编译下载的时间,可以运行flash_saver程序将这些数据保存到Flash固定区域(要求芯片Flash容量至少为384KB)
然后根据串口提示,修改WiFi.h中WIFI_FIRMWAREAREA_ADDR的值(取消注释)
这样就可以移除sd8801_uapsta.c文件,大幅度降低程序烧写时间了

如果SDIO程序在固件下载完成后频繁出现CRC校验错误以及超时(timeout)的错误,可以将SDIO改为1位模式,并考虑将WIFI_CLOCK_FREQ的值降低,降速运行
如果SPI程序频繁出现missed an interrupt的错误,则说明PC9内部的下拉电阻不起作用,建议在PC9引脚上外接一个阻值较小的下拉电阻。如果还是不行,则在wifi.h中将WIFI_LOWLEVEL_NOINTPIN设为1即可解决问题(也就是将中断方式改为轮询方式,这样会占用较多CPU资源)

本程序也支持88W8782芯片,但需要将固件sd8801_uapsta.c替换成8782的内容,然后把WiFi.h中的数据发送通道数WIFI_DATAPORTS_TX_NUM由11改为15

Keil5工程下载地址:Marvell88W8801WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)-网络设备文档类资源-CSDN下载

程序中的dhcpd兼容lwip2.0.3版本,但是nd6d不行(因为2.0版本lwip的raw_pcb不支持同时绑定IPv6多播地址和netif接口,只绑定IPv6多播地址的话,最后在raw_sendto发送数据包的时候lwip根本不知道从哪个netif接口发出去,从而发送失败。所以要想兼容只有重写整个程序,不用raw_pcb实现)

此版本修复了上一个版本(20190314版)存在的一些问题,主要更新如下: 

1. 增加了IPv6功能。由于IPv6依赖于多播功能,所以增加了CMD_MAC_MULTICAST_ADR命令用于支持多播
2. 增加了创建热点的功能(μAP),以及AP相关的WiFi命令(APCMD_*)
3. 将WiFi.c按功能拆分成了几个c文件
4. HAL库程序中,SDIO DMA改成了用LL库(LL库是HAL库附带的库)
5. 增加了dhcpd和nd6d服务器,用于在μAP模式下给客户端分配IPv4地址和IPv6地址
6. 简化了WiFi事件处理函数WiFi_EventProcess和WiFi_EventHandler,去掉了WiFi_AuthenticationCompleteHandler
7. 将lwip2.0.3升级到了lwip2.1.2(lwip2.1.2的ethernetif.c位于contrib-2.1.0.zip/examples/ethernetif)
8. 修复了ethernetif.c在启用ETH_PAD_SIZE选项后不能正确收发数据的问题
9. 去掉了连接多个STA的功能(因为一般用不到这个功能),现在只能连接一个STA。去掉了打印TCP数据包信息的tcpdump函数
10. 修改了测速上位机,将文本框改成了下拉框,增加了IPv6的支持

【后续更新】

2020年2月13日:dhcpd的更新以及支持Win7任务栏图标进度显示的测速器上位机程序V1.3(【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_ZLK1214的专栏-CSDN博客
2021年1月2日:STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率(STM32F103RE和STM32F407VE单片机用lwip 2.1.2驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率_ZLK1214的专栏-CSDN博客)

【勘误】
2021年11月21日:lwipopts.h里面LWIP_TCP_SACK_OUT=1是允许TCP选择性确认的意思,注释没写清楚
2021年12月16日:STM32F1 flash_saver程序里面,program函数的erase.NbPages应该修改为(flash_end - data_start + 1) / FLASH_PAGE_SIZE,否则最后一页不会被擦除
2022年1月17日:AP模式下,DHCPD分配IPv4地址时,打印[DHCP client]后,程序有陷入死循环的可能。原因是dhcpd_get_option_string函数中,case DHCP_OPTION_OVERLOAD的if (i + optionptr[i + 1] + 1 >= len)条件分支下,break只能跳出switch语句块,无法跳出while循环,i的值一直不变,造成死循环
解决方案是把while语句外的LWIP_DEBUGF(DHCPD_DEBUG | LWIP_DBG_LEVEL_WARNING, ("%s: bogus packet, option fields too long\n", __FUNCTION__))移动到if语句内,然后break改成return NULL
还有dhcpd_add_lease函数中,若dhcpd_find_oldest_expired_lease返回值不为NULL,则lease已位于state->leases链表中,不能再次加入链表。否则链表会形成环路,dhcpd_find_lease_by_chaddr函数陷入死循环
所以执行lease->next = state->leases;if (state->leases != NULL) state->leases->prev = lease;state->leases = lease;这四句话之前,必须判断一下lease是由mem_malloc而来
2022年1月18日:AP模式下,DHCPD里面,dhcpd_config的租期时间单位是秒,然而程序里面却是和sys_now()毫秒值直接相加,导致默认租期86400秒缩小了1000倍,变成了86.4秒。每个新分配出来的IP地址都只有86.4秒的租期

【注意事项】
(1)WiFi模块初始化完毕后,请不要随意使用WiFi_LowLevel_SetBlockSize(1, size)函数。该函数修改0号功能区的0x110和0x111寄存器,会导致1号功能区的WIFI_INTSTATUS_UPLD中断标志位被清除,WiFi_Input()函数停止工作
(2)开机时如果没有拉低PDN复位WiFi模块,那么WiFi_SendPacket和WiFi_Input里面的静态变量next_port值有可能不正确。这会导致WiFi_SendPacket()卡死在等待数据通道可用的while循环里面,WiFi_Input不读取数据直接清除WIFI_INTSTATUS_UPLD中断标志位,数据积压在模块里面,不仅收不到网络数据,而且所有的命令都无法执行成功
一开始还没有初始化struct netif就收到数据包的话,执行WiFi_PacketHandler函数时netif->state为NULL会导致HardFault
(3)若CMD引脚一直没有反应,收不到命令回应,请检查PDN脚是否已接好。开机时PDN是否有先拉低后拉高的信号
(4)WiFi模块连接某些劣质无线路由器,隔一晚上后,第二天电脑就会ping不通WiFi模块。断开并重新连接路由器,网络恢复正常
如果关闭自动睡眠(不关闭屏保),让电脑连接这样的路由器,隔一天晚上,第二天电脑就上不了网了,网络图标上会有黄色的感叹号,提示“此连接受限制或无连接”。断开并重新连接路由器,网络恢复正常
一般电脑都开启了几分钟不动鼠标自动进入睡眠模式的功能。电脑进入睡眠模式后会断开wifi连接,唤醒后又会重新连接,所以不会感觉到有问题
WiFi模块连接其他质量好的无线路由器,如移动宽带送的光猫wifi,就一直能ping得通,不会断
归根结底,是路由器本身出现了问题,连接热点时间长了后,路由器可能因为内存不足或者其他原因,没有将广播包发送给WiFi模块,WiFi模块收不到任何广播包,导致网络ARP出问题
解决办法:
在WiFi_PacketHandler函数中,连接无线路由器10分钟后,每3分钟判断一次收到的广播包的个数。如果某3分钟内收到的广播包的个数为0,则在没有重要通信任务的情况下,断开并重连路由器
若data参数的data->payload[0]到data->payload[5]全为0xff,则认为收到了一个广播包,计数变量加1
(5)如果下载完固件,串口打印Firmware is successfully downloaded后(或者只打印了一半文字),单片机就重启,则可能是因为固件下载完瞬间WiFi模块电流比较大,电源芯片带负载能力不行,扛不住,输出电压降下去了,单片机供电不足而复位。请用示波器仔细检查下。最近已经有两个人遇到这种问题了。

看到没?电压降了!降到了1.7单片机肯定重启了。用的电源芯片最大输出才200mA,肯定带不动。。。
这个人,一开始串口线都没有接出来,是在IAR软件里面用调试器单步调试的。他在WiFi_DownloadFirmware函数内,等待固件下载完毕,寄存器的值变为0xfedc那里打了一个断点,发现那个断点一直没有触发,就判断是程序有问题。。。没有串口,根本就发现不了单片机重启了,程序永远不会执行到断点那里。最后把串口接出来了,发现单片机重启了,是电源的问题。这充分说明,串口是很重要的。硬件没有调试完成前,一定不要把串口舍弃了!串口是检查程序执行流程是否正确的重要工具,这个是单步调试无法做到的。

【模块外连线】

【小模块电路图】

88W8801原理图和封装库下载链接:百度网盘 请输入提取码(提取码:my2n)
请注意U2的左右顺序。从模块正面看,中间左边是5脚(OUT),接的是88W8801芯片,右边是2脚(IN),接的是天线。其余四个脚都是GND。

供电方式:VDD33、AVDD33和VIO都接3.3V,VDD11和AVDD18采用芯片内部LDO电源。

通信接口选择:由CON1和CON0脚共同决定。悬空是1,接下拉电阻是0。因为电路图中CON1悬空(NC),CON0用3.3kΩ的电阻下拉到地,所以CON1=1,CON0=0,选的是SDIO接口。
注意:SDIO接口自带了一个SPI模式,也可以用SPI方式通信,不用更改CON1和CON0脚。
在程序中直接替换wifi_lowlevel.c文件就可以。

【Keil5工程截图】 

【笔者所用的开发板和WiFi模块】 

STM32F103RE开发板: 

STM32F407VE开发板:

带底板的88W8801 WiFi模块:

这个底板的PCB文件是淘宝卖家给的,笔者发现他的PCB上面,ANT天线和GND被铺铜误连在了一起,因此模块上这个天线是完全不起作用的,PCB文件设计上有瑕疵。 他卖的模块上面三个贴片槽,只贴了中间的,而且贴的是一个电容,两边槽位都没有贴,估计就是跟ANT和GND短路了有关。

如果用的开发板上面带有SD卡槽,运行程序时,下载固件后或获取MAC地址后一直出现CRC错误和data timeout错误,可以采取下面的措施:

(1)把SDIO模式由4位数据线模式改为1位模式,只接SDIO_D0(PC8)和SDIO_D1(PC9,作为SDIO中断引脚),不接SDIO_D2~3(PC10~11) 。修改wifi_lowlevel.c中的WiFi_LowLevel_SDIOInit函数,将下面两句话注释掉,只保留SDIO_Init

/* SDIO外设的总线宽度设为4位 */
//sdio.BusWide = SDIO_BUS_WIDE_4B;
SDIO_Init(SDIO, sdio);
//WiFi_LowLevel_WriteReg(0, SDIO_CCCR_BUSIFCTRL, WiFi_LowLevel_ReadReg(0, SDIO_CCCR_BUSIFCTRL) | SDIO_CCCR_BUSIFCTRL_BUSWID_4Bit);

改为1位数据模式后,笔者上面的黑色带卡槽开发板的问题已经解决(用电脑USB口供电,串口用的是USB转TTL模块)。

(2)如果还是不行,就降低SDIO的时钟频率。打开WiFi.h,将WIFI_CLOCK_FREQ改小。如100万(1MHz),50万(500kHz),或者10万(100kHz),可以设为0(使用最低频率,也就是最高分频系数)

(3)将时钟线(SDIO_CK)连线的长度加长一倍。

不过SD卡槽里面不要插内存卡。尽管插了内存卡进去,Wi-Fi模块还是可以照常使用,但是SD卡是没法用的,SD卡正常的初始化命令序列(如CMD2、CMD3)是无法成功执行的。

虽然SDIO标准规定可以总线上可以接多张SD卡,但STM32单片机的SDIO接口只支持接一张卡,STM32F103的芯片手册Datasheet(不是参考手册)中有声明:
The current version supports only one SD/SDIO/MMC4.2 card at any one time and a stack of MMC4.1 or previous.
如果想要同时使用WiFi模块和SD内存卡,建议SD内存卡采用SPI总线通信。

【程序运行截图】

1. 串口输出

2. ping IP地址和计算机名

3. 访问http服务器

4. 将固件烧写到单片机Flash固定区域的程序(用于节约主程序烧写时间) 

5. 创建的热点

6. 测速器上位机

7. 电脑连接创建的热点

8. 关闭printf后,UDP的速度可以达到650KB/s

#define WIFI_DISPLAY_PACKET_SIZE 0
#define WIFI_DISPLAY_RESPTIME 0

【程序运行结果】

STM32F103RE SDIO 88W8801
SystemCoreClock=72000000
[Clock] freq=400.0kHz, requested=400.0kHz, divider=178
RESPCMD63, RESP1_b0ff8000
RESPCMD63, RESP1_b0300000
Number of I/O Functions: 3
Memory Present: 0
Relative Card Address: 0x0001
Card selected! RESP1_00001e00
[Clock] freq=24000.0kHz, requested=25000.0kHz, divider=1
[CIS] func=0, ptr=0x00008000
Product Information: Marvell 802.11 SDIO ID: 48
Manufacturer Code: 0x02df
Manufacturer Information: 0x9138
Card Function Code: 0x0c
System Initialization Bit Mask: 0x00
Maximum Block Size: 256
Maximum Transfer Rate Code: 0x5a
[CIS] func=1, ptr=0x00008080
Manufacturer Code: 0x02df
Manufacturer Information: 0x9139
Card Function Code: 0x0c
System Initialization Bit Mask: 0x00
Maximum Block Size: 512
[CIS] func=2, ptr=0x00008100
[CIS] func=3, ptr=0x00008180
Firmware is successfully downloaded!
CMDRESP 0x804d at 21ms
MAC Addr: 20:32:33:3B:18:F3
IP_FORWARD is enabled!
LWIP_IPV6_FORWARD is enabled!
Join group FF02::1! bss=0x00
IPv6 link-local address: FE80::2232:33FF:FE3B:18F3
Join group FF02::1! bss=0x10
IPv6 link-local address for micro AP: FE80::2232:33FF:FE3B:18F3
IPv6 address for micro AP: FD20::1
Join group FF02::2! bss=0x10
[Send] len=86, bss=0x10, port=-1
[Send] len=86, bss=0x10, port=-1
CMDRESP 0x8006 at 435ms
SSID 'midea_ca_3277', MAC 34:5B:BB:FA:B9:F2, RSSI 85, Channel 1
  Timestamp 1960128461255, Beacon Interval 100, TSF timestamp: 198887
  Capability: 0x0431 (Security: WPA2, Mode: Infrastructure)
  Rates: 1.0Mbps 2.0Mbps 5.5Mbps 6.0Mbps 9.0Mbps 11.0Mbps 12.0Mbps 18.0Mbps
SSID 'CMCC-gqd4', MAC F4:DE:0C:22:D4:B0, RSSI 83, Channel 3
  Timestamp 1385713816677, Beacon Interval 100, TSF timestamp: 412767
  Capability: 0x0411 (Security: WPA2, Mode: Infrastructure)
  Rates: 1.0Mbps 2.0Mbps 5.5Mbps 11.0Mbps 9.0Mbps 18.0Mbps 36.0Mbps 54.0Mbps
CMDRESP 0x8006 at 434ms
SSID '??WIFI', MAC 1C:D5:E2:72:98:60, RSSI 52, Channel 8
  Timestamp 1651343061363, Beacon Interval 100, TSF timestamp: 959661
  Capability: 0x0411 (Security: WPA2, Mode: Infrastructure)
  Rates: 1.0Mbps 2.0Mbps 5.5Mbps 11.0Mbps 6.0Mbps 9.0Mbps 12.0Mbps 18.0Mbps
CMDRESP 0x8006 at 434ms
CMDRESP 0x8006 at 221ms
Scan finished!
CMDRESP 0x80b0 at 1ms
[Event] code=0x002e, bss=0x10, size=85, reason=0, mac=20:32:33:3B:18:F3
AP is started!
Packet forwarding mode: by host
CMDRESP 0x80b1 at 6853ms
AP is created!
CMDRESP 0x8028 at 0ms
CMDRESP 0x8006 at 1659ms
CMDRESP 0x80c4 at 7637ms
[Event] code=0x002e, bss=0x10, size=85, reason=0, mac=20:32:33:3B:18:F3
AP is started!
Packet forwarding mode: by host
CMDRESP 0x8012 at 30ms
capability=0x0411, status_code=0x0000, aid=0xc005
Waiting for authentication!
[Event] code=0x0017, bss=0x00, size=77
WMM status change event occurred!
[Event] code=0x002b, bss=0x00, size=10
Authenticated!
[Send] len=350, bss=0x00, port=1
Synchronizing multicast filter! num=1
CMDRESP 0x8010 at 0ms
Multicast filter is synchronized! num=1
[Recv] len=590, bss=0x00, port=1
[Send] len=350, bss=0x00, port=2
[Recv] len=590, bss=0x00, port=2
[Send] len=42, bss=0x00, port=3
[Send] len=42, bss=0x00, port=4
Join group FF02::1:FF3B:18F3! bss=0x00
[Send] len=86, bss=0x00, port=5
[Send] len=78, bss=0x00, port=6
[Send] len=42, bss=0x00, port=7
Synchronizing multicast filter! num=2
CMDRESP 0x8010 at 1ms
Multicast filter is synchronized! num=2
[Send] len=86, bss=0x00, port=8
[Send] len=42, bss=0x00, port=9
DHCP supplied address!
IP address: 192.168.1.11
Subnet mask: 255.255.255.0
Default gateway: 192.168.1.1
DNS Server: 192.168.1.1
[Send] len=42, bss=0x00, port=10
dns_test: IP of savannah.nongnu.org is not in cache!
[Recv] len=42, bss=0x00, port=3
[Send] len=79, bss=0x00, port=11
Packet port 1 released at 757ms
Packet port 2 released at 673ms
Packet port 3 released at 596ms
Packet port 4 released at 540ms
Packet port 5 released at 537ms
Packet port 6 released at 537ms
Packet port 7 released at 537ms
Packet port 8 released at 353ms
Packet port 9 released at 56ms
Packet port 10 released at 43ms
[Send] len=42, bss=0x00, port=1
[Send] len=79, bss=0x00, port=2
[Recv] len=95, bss=0x00, port=4
DNS Found IP of savannah.nongnu.org: 209.51.188.72
TCP socket is connecting to 209.51.188.72...
[Send] len=62, bss=0x00, port=3
[Send] len=86, bss=0x00, port=4
[Recv] len=62, bss=0x00, port=5
TCP socket is connected! err=0
[Send] len=115, bss=0x00, port=5
[Recv] len=60, bss=0x00, port=6
[Recv] len=1448, bss=0x00, port=7
1394 bytes received!
[Recv] len=1448, bss=0x00, port=8
1394 bytes received!
[Send] len=54, bss=0x00, port=6
[Recv] len=1448, bss=0x00, port=9
1394 bytes received!
[Send] len=54, bss=0x00, port=7
[Send] len=42, bss=0x00, port=8
[Recv] len=1448, bss=0x00, port=10
1394 bytes received!
[Send] len=54, bss=0x00, port=9
[Send] len=42, bss=0x00, port=10
-- Packet port 11 released at 2475ms
[Send] len=70, bss=0x00, port=11
Packet port 1 released at 2010ms
Packet port 2 released at 2010ms
Packet port 3 released at 1953ms
Packet port 4 released at 1920ms
Packet port 5 released at 1677ms
Packet port 6 released at 1383ms
Packet port 7 released at 1216ms
Packet port 8 released at 1033ms
Packet port 9 released at 69ms
[Recv] len=142, bss=0x00, port=11
[Send] len=86, bss=0x00, port=1
[Recv] len=142, bss=0x00, port=12
[Recv] len=142, bss=0x00, port=13
[Recv] len=86, bss=0x00, port=14
[Recv] len=1448, bss=0x00, port=15
[Send] len=66, bss=0x00, port=2
[Recv] len=1448, bss=0x00, port=1
[Send] len=66, bss=0x00, port=3
[Recv] len=1448, bss=0x00, port=2
[Send] len=66, bss=0x00, port=4
1394 bytes received!
[Recv] len=1448, bss=0x00, port=3
4182 bytes received!
[Send] len=54, bss=0x00, port=5
[Recv] len=1448, bss=0x00, port=4
[Send] len=66, bss=0x00, port=6
[Recv] len=1448, bss=0x00, port=5
[Send] len=66, bss=0x00, port=7
[Recv] len=1448, bss=0x00, port=6
[Send] len=66, bss=0x00, port=8
1394 bytes received!
[Recv] len=1448, bss=0x00, port=7
4182 bytes received!
[Send] len=54, bss=0x00, port=9
Packet port 1 released at 802ms
Packet port 2 released at 602ms
Packet port 3 released at 598ms
Packet port 4 released at 329ms
Packet port 5 released at 321ms
Packet port 6 released at 45ms
Packet port 7 released at 41ms
Packet port 8 released at 37ms
Packet port 10 released at 870ms
Packet port 11 released at 866ms
[Send] len=78, bss=0x00, port=10
[Send] len=78, bss=0x00, port=11
[Recv] len=1448, bss=0x00, port=8
[Send] len=54, bss=0x00, port=1
[Recv] len=1448, bss=0x00, port=9
[Send] len=54, bss=0x00, port=2
[Recv] len=1448, bss=0x00, port=10
[Send] len=66, bss=0x00, port=3
[Recv] len=1448, bss=0x00, port=11
[Send] len=66, bss=0x00, port=4
1394 bytes received!
[Recv] len=1448, bss=0x00, port=12
[Send] len=66, bss=0x00, port=5
[Recv] len=1448, bss=0x00, port=13
4182 bytes received!
[Send] len=54, bss=0x00, port=6
[Recv] len=1448, bss=0x00, port=14
1394 bytes received!
[Recv] len=1448, bss=0x00, port=15
1394 bytes received!
[Send] len=54, bss=0x00, port=7
[Recv] len=1448, bss=0x00, port=1
[Send] len=66, bss=0x00, port=8
[Recv] len=1448, bss=0x00, port=2
2788 bytes received!
-- Packet port 9 released at 624ms
[Send] len=54, bss=0x00, port=9
Packet port 1 released at 367ms
Packet port 2 released at 360ms
Packet port 3 released at 343ms
Packet port 4 released at 339ms
Packet port 5 released at 332ms
Packet port 6 released at 326ms
Packet port 7 released at 42ms
Packet port 10 released at 493ms
Packet port 11 released at 494ms
[Recv] len=1448, bss=0x00, port=3
1394 bytes received!
[Recv] len=1448, bss=0x00, port=4
1394 bytes received!
[Send] len=54, bss=0x00, port=10
[Recv] len=1448, bss=0x00, port=5
1394 bytes received!
[Recv] len=1037, bss=0x00, port=6
983 bytes received!
[Send] len=54, bss=0x00, port=11
IPv6 address 1: 240E:398:5B0:ABA0:2232:33FF:FE3B:18F3
IPv6 address 2: 240E:398:5B0:A740:2232:33FF:FE3B:18F3
DNS Server: FE80::1
dns_test: IP of savannah.nongnu.org is in cache: 209.51.188.72
TCP socket is connecting to 209.51.188.72...
[Send] len=62, bss=0x00, port=1
[Send] len=86, bss=0x00, port=2
[Recv] len=62, bss=0x00, port=7
TCP socket is connected! err=0
[Send] len=115, bss=0x00, port=3
[Recv] len=60, bss=0x00, port=8
[Recv] len=1448, bss=0x00, port=9
1394 bytes received!
[Recv] len=1448, bss=0x00, port=10
[Send] len=66, bss=0x00, port=4
[Recv] len=1448, bss=0x00, port=11
[Send] len=66, bss=0x00, port=5
[Recv] len=1448, bss=0x00, port=12
4182 bytes received!
[Send] len=54, bss=0x00, port=6
[Recv] len=1448, bss=0x00, port=13
1394 bytes received!
[Recv] len=1448, bss=0x00, port=14
1394 bytes received!
[Send] len=54, bss=0x00, port=7
[Recv] len=1448, bss=0x00, port=15
1394 bytes received!
[Recv] len=1448, bss=0x00, port=1
1394 bytes received!
-- Packet port 8 released at 1469ms
[Send] len=54, bss=0x00, port=8
Packet port 1 released at 908ms
Packet port 2 released at 834ms
Packet port 3 released at 621ms
Packet port 4 released at 330ms
Packet port 5 released at 327ms
Packet port 6 released at 321ms
Packet port 9 released at 1482ms
Packet port 10 released at 1217ms
Packet port 11 released at 1199ms
[Recv] len=1448, bss=0x00, port=2
[Send] len=66, bss=0x00, port=9
[Recv] len=1448, bss=0x00, port=3
2788 bytes received!
[Send] len=54, bss=0x00, port=10
[Recv] len=1448, bss=0x00, port=4
[Send] len=66, bss=0x00, port=11
[Recv] len=1448, bss=0x00, port=5
[Send] len=66, bss=0x00, port=1
[Recv] len=1448, bss=0x00, port=6
[Send] len=66, bss=0x00, port=2
1394 bytes received!
[Recv] len=1448, bss=0x00, port=7
4182 bytes received!
[Send] len=54, bss=0x00, port=3
[Recv] len=54, bss=0x00, port=8
TCP socket is closed! err=0, count=33045
[Send] len=54, bss=0x00, port=4
[Recv] len=1448, bss=0x00, port=9
[Send] len=66, bss=0x00, port=5
[Recv] len=86, bss=0x00, port=10
[Send] len=86, bss=0x00, port=6
Packet port 1 released at 1585ms
Packet port 2 released at 1312ms
Packet port 3 released at 332ms
Packet port 4 released at 78ms
Packet port 5 released at 64ms
Packet port 7 released at 2166ms
Packet port 8 released at 2150ms
Packet port 9 released at 1898ms
Packet port 10 released at 1892ms
Packet port 11 released at 1622ms
[Recv] len=54, bss=0x00, port=11
[Recv] len=1448, bss=0x00, port=12
[Send] len=66, bss=0x00, port=7
1394 bytes received!
[Recv] len=1448, bss=0x00, port=13
[Send] len=66, bss=0x00, port=8
[Recv] len=1448, bss=0x00, port=14
4182 bytes received!
[Send] len=54, bss=0x00, port=9
[Recv] len=1448, bss=0x00, port=15
1394 bytes received!
[Recv] len=1448, bss=0x00, port=1
1394 bytes received!
[Send] len=54, bss=0x00, port=10
[Recv] len=1448, bss=0x00, port=2
1394 bytes received!
[Send] len=54, bss=0x00, port=11
[Recv] len=1448, bss=0x00, port=3
[Send] len=66, bss=0x00, port=1
[Recv] len=1037, bss=0x00, port=4
[Send] len=66, bss=0x00, port=2
[Recv] len=1448, bss=0x00, port=5
3771 bytes received!
[Send] len=54, bss=0x00, port=3
[Recv] len=54, bss=0x00, port=6
TCP socket is closed! err=0, count=33045
[Send] len=54, bss=0x00, port=4
[Recv] len=54, bss=0x00, port=7
[Recv] len=102, bss=0x00, port=8
[Recv] len=122, bss=0x00, port=9
[Recv] len=102, bss=0x00, port=10
[Recv] len=122, bss=0x00, port=11
[Recv] len=42, bss=0x00, port=12
[Recv] len=42, bss=0x00, port=13
[Recv] len=42, bss=0x00, port=14
[Recv] len=42, bss=0x00, port=15
[Recv] len=42, bss=0x00, port=1

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨大八爪鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值