Применяю более старый вариант W3100A с Infineon XC176 в качестае сервера. Ни каких проблем не замечал. Перед переопределением соката не мешало бы его закрыть.
Например в моём варианте:
void socket_close(SOCKET s)
{
u_int len;
if (select(s, SEL_CONTROL) == SOCK_CLOSED) return; // Already closed
// When closing, if there's data which have not processed, Insert some source codes to handle this
// Or before application call close(), handle those data first and call close() later.
len = select(s, SEL_SEND);
if (len == SSIZE[s])
{
register unsigned int tmout=0xFFFF;
I_STATUS[s] =0;
TCP_COMMAND[s] = CCLOSE; // CLOSE
while(!(I_STATUS[s] & SCLOSED)&& tmout--) WATCHDOG;
}
}