Ho fatto un'altra modifica alla EthernetServer.
Il problema era che la EthernetServer metteva tutti i socket in ascolto, ma se volessi assegnargli sono 2 socket perché gli altri due li voglio usare come client mi era impossibile. Allora ho aggiunto questa funzione:
void EthernetServer::begin(uint8_t numSock )
{
for (int sock = 0; sock < MAX_SOCK_NUM && sock <= numSock; sock++) {
EthernetClient client(sock);
if (client.status() == SnSR::CLOSED) {
socket(sock, SnMR::TCP, _port, 0);
listen(sock);
EthernetClass::_server_port[sock] = _port;
break;
}
}
}
Vedrò se riesco anche a fare qualcosa in modo da rendere dinamica l'assegnazione dei socket, ma la vedo dura.