54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
|
|
typedef struct {
|
|
size_t size;
|
|
size_t used;
|
|
uint8_t *data;
|
|
} buffer_t;
|
|
|
|
typedef struct client_t client_t;
|
|
struct client_t {
|
|
client_t *prev;
|
|
client_t *next;
|
|
microtcp_socket_t *socket;
|
|
buffer_t input;
|
|
buffer_t output;
|
|
};
|
|
|
|
int main(void)
|
|
{
|
|
microtcp_t *mtcp = microtcp_create();
|
|
|
|
microtcp_socket_t *server = microtcp_open(mtcp, 80);
|
|
|
|
microtcp_queue_t *queue = microtcp_queue_create(mtcp);
|
|
microtcp_queue_register(queue, server, NULL, MICROTCP_EVENT_ACCEPT);
|
|
while (1) {
|
|
microtcp_event_t event = microtcp_queue_next(queue, no_block);
|
|
switch (event.type) {
|
|
|
|
case MICROTCP_EVENT_NONE:
|
|
break;
|
|
|
|
case MICROTCP_EVENT_READ:
|
|
break;
|
|
|
|
case MICROTCP_EVENT_RECV:
|
|
{
|
|
microtcp_socket_t *client_socket = event.socket;
|
|
microtcp_recv(client_socket, );
|
|
}
|
|
break;
|
|
|
|
case MICROTCP_EVENT_ACCEPT:
|
|
{
|
|
microtcp_socket_t *client_socket = microtcp_accept(event.socket, true);
|
|
microtcp_queue_register(queue, client_socket, NULL, MICROTCP_EVENT_SEND | MICROTCP_EVENT_RECV);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
microtcp_queue_destroy(queue);
|
|
|
|
microtcp_destroy(mtcp);
|
|
return 0;
|
|
} |