先把三个问题列一下:
1、TCP接收的分包如何合并 ??
2、WEB Server占用内存如何减少?64K都快被它用完了。
3、23年9月的例程如何才能正常工作 ?
问题1的具体情况:
我使用的是32V208RUB6,基于22年1月WCHNET_LIB_VER=15 版本例程上修改时发现,
浏览器端请求包超过800字节后会被分包处理,造成后续包中的数据丢失(第一个包能被识别为HTTP数据,分包后的数据被识别为ERR数据)。
在数据接收函数中看不出和分包有关的处理
void WCHNET_HandleSockInt(u8 socketid, u8 intstat) {
? ? u32 len;
? ? if (intstat & SINT_STAT_RECV)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//receive data
? ? {
? ? ? ? len = WCHNET_SocketRecvLen(socketid, &bufAddr);
? ? ? ? printf("\r\n - - - - - WCHNET_SocketRecvLen %d? socket id %d\r\n", len, socketid);
? ? ? ? if (len) {
? ? ? ? ? ? WCHNET_SocketRecv(socketid, RecvBuffer, &len);
? ? ? ? ? ? DealDataflag = 1;
? ? ? ? ? ? socket = socketid;
? ? ? ? }
? ? }
特此请教该 如何合并分包?谢谢 !
分包数据有时候会在串口重复输出多次:
HTTP Method=3? Post
URL name: success.html
提交的内容__PMAC=1.2.3.4.5.6&__PSIP=192.168.1.10&__PMSK=255.255.255.0&__PGAT=192.168.1.1&__PMOD=1&__PSPT=1000&__PDIP=192.168.1.240&__PDPT=1000&__PUSE=admin&__PPAS?
?- - - - - WCHNET_SocketRecvLen 6? socket id 2
收到 6 字节,addr=0x200015f8?
=12345
接收数据打印完毕
?
HTTP Method=0? Error
URL name: success.html
?- - - - - WCHNET_SocketRecvLen 6? socket id 2
收到 6 字节,addr=0x200015f8?
=12345
接收数据打印完毕
?
HTTP Method=0? Error
URL name: success.html
TCP Disconnect
TCP Connect Success
问题3相关数据:
23年9月18的版本上传后不工作,没能测试WebServer是否存在分包的问题。
23年9月18版本串口打印如下:但是网不通,无法PING通,无法打开 网页
WEB SERVER
SystemClk:120000000
net version:18
WEB SERVER
SystemClk:120000000
net version:18
ip: 192.168.1.10.
mac addr: 1 2 3 4 5 6?
WCHNET_LibInit Success
SocketIdForListen 0
desport: 1000, srcport: 1000
desip:192.168.1.100
mode 1
__ASIP = 1.2.3.4.5.6
__ASIP = 192.168.1.10
__AMSK = 255.255.255.0
__AGAT = 192.168.1.1
__AMOD = 1
__ASPT = 1000
__ADIP = 192.168.1.100
__ADPT = 1000
__AUSE = admin
__APAS = 123
PHY Link Success
TCP Timeout
desport: 1000, srcport: 1000
desip:192.168.1.100
mode 1
TCP Timeout