CH32F208 做TCP SERVER 重置IP問(wèn)題。
在PHY已經(jīng)連接上,mcu作為T(mén)CP SERVER, 已經(jīng)用某IP地址初始化過(guò)了,在已經(jīng)被主機(jī)連接或者不連接的情況下,
假如更改MCU的IP地址,主機(jī)來(lái)連接改過(guò)地址后的SERVER,一直連不上,但是只要拔插一下網(wǎng)線就可以了,這個(gè)情況軟件怎么處理達(dá)到 不重啟芯片自動(dòng)能被主機(jī)重連上?
CH32F208 做TCP SERVER 重置IP問(wèn)題。
在PHY已經(jīng)連接上,mcu作為T(mén)CP SERVER, 已經(jīng)用某IP地址初始化過(guò)了,在已經(jīng)被主機(jī)連接或者不連接的情況下,
假如更改MCU的IP地址,主機(jī)來(lái)連接改過(guò)地址后的SERVER,一直連不上,但是只要拔插一下網(wǎng)線就可以了,這個(gè)情況軟件怎么處理達(dá)到 不重啟芯片自動(dòng)能被主機(jī)重連上?
補(bǔ)充一下,改過(guò)以后,重新初始化了一下,執(zhí)行下面代碼:
WCHNET_GetMacAddr(MACAddr);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//get the chip MAC address
? ? i = ETH_LibInit(IPAddr, GWIPAddr, IPMask, MACAddr);? ? ? ? ? ?//Ethernet library initialize
? ? mStopIfError(i);
if (i == WCHNET_ERR_SUCCESS)
{
//? ? ? ? printf("WCHNET_LibInit Success\r\n");
#if KEEPALIVE_ENABLE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//Configure keep alive parameters
{
struct _KEEP_CFG cfg;
cfg.KLIdle = 20000;
cfg.KLIntvl =1000;// 15000;
cfg.KLCount = 1;//9
WCHNET_ConfigKeepLive(&cfg);
}
#endif
memset(socket, 0xff, WCHNET_MAX_SOCKET_NUM);
WCHNET_CreateTcpSocketListen();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//Create TCP Socket for Listening
您好,
1.在更改208的本地IP前,需要調(diào)用WCHNET_SocketClose函數(shù)關(guān)閉已打開(kāi)的socket。
2.再次調(diào)用ETH_LibInit函數(shù)后需調(diào)用ETH_PHYLink函數(shù)重新建立PHY的連接。
多謝,測(cè)試了可以的