12 Server::Server(uint16_t port
)
19 for (int sock
= 0; sock
< MAX_SOCK_NUM
; sock
++) {
21 if (client
.status() == SOCK_CLOSED
) {
22 socket(sock
, Sn_MR_TCP
, _port
, 0);
24 EthernetClass::_server_port
[sock
] = _port
;
34 for (int sock
= 0; sock
< MAX_SOCK_NUM
; sock
++) {
37 if (EthernetClass::_server_port
[sock
] == _port
) {
38 if (client
.status() == SOCK_LISTEN
) {
40 } else if (client
.status() == SOCK_CLOSE_WAIT
&& !client
.available()) {
51 Client
Server::available()
55 for (int sock
= 0; sock
< MAX_SOCK_NUM
; sock
++) {
57 if (EthernetClass::_server_port
[sock
] == _port
&&
58 client
.status() == SOCK_ESTABLISHED
) {
59 if (client
.available()) {
60 // XXX: don't always pick the lowest numbered socket.
69 void Server::write(uint8_t b
)
74 void Server::write(const char *str
)
76 write((const uint8_t *)str
, strlen(str
));
79 void Server::write(const uint8_t *buffer
, size_t size
)
83 for (int sock
= 0; sock
< MAX_SOCK_NUM
; sock
++) {
86 if (EthernetClass::_server_port
[sock
] == _port
&&
87 client
.status() == SOCK_ESTABLISHED
) {
88 client
.write(buffer
, size
);