17 _add(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Add *ev)
19 char welcome[] = "hello! - sent from the server";
20 Ecore_Con_Server *srv;
22 const Eina_List *clients, *l;
24 struct _Client *client = malloc(sizeof(*client));
27 printf("Client with ip %s, port %d, connected = %d!\n",
28 ecore_con_client_ip_get(ev->client),
29 ecore_con_client_port_get(ev->client),
30 ecore_con_client_connected_get(ev->client));
32 ecore_con_client_send(ev->client, welcome, sizeof(welcome));
33 ecore_con_client_flush(ev->client);
35 ecore_con_client_timeout_set(ev->client, 6);
37 ecore_con_client_data_set(ev->client, client);
39 srv = ecore_con_client_server_get(ev->client);
40 printf("Clients connected to this server:\n");
41 clients = ecore_con_server_clients_get(srv);
42 EINA_LIST_FOREACH(clients, l, cl)
43 printf("%s\n", ecore_con_client_ip_get(cl));
45 return ECORE_CALLBACK_RENEW;
49 _del(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Del *ev)
51 struct _Client *client;
54 return ECORE_CALLBACK_RENEW;
56 client = ecore_con_client_data_get(ev->client);
58 printf("Lost client with ip %s!\n", ecore_con_client_ip_get(ev->client));
59 printf("Total data received from this client: %d\n", client->sdata);
60 printf("Client was connected for %0.3f seconds.\n",
61 ecore_con_client_uptime_get(ev->client));
66 ecore_con_client_del(ev->client);
68 return ECORE_CALLBACK_RENEW;
72 _data(void *data __UNUSED__, int type __UNUSED__, Ecore_Con_Event_Client_Data *ev)
75 struct _Client *client = ecore_con_client_data_get(ev->client);
77 snprintf(fmt, sizeof(fmt),
78 "Received %i bytes from client %s port %d:\n"
82 ev->size, ecore_con_client_ip_get(ev->client),
83 ecore_con_client_port_get(ev->client), ev->size);
85 printf(fmt, ev->data);
87 client->sdata += ev->size;
89 return ECORE_CALLBACK_RENEW;
95 Ecore_Con_Server *svr;
97 const Eina_List *clients, *l;
103 if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_TCP, "127.0.0.1", 8080, NULL)))
106 ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
107 ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
108 ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
110 ecore_con_server_timeout_set(svr, 10);
111 ecore_con_server_client_limit_set(svr, 3, 0);
113 ecore_main_loop_begin();
115 clients = ecore_con_server_clients_get(svr);
116 printf("Clients connected to this server when exiting: %d\n",
117 eina_list_count(clients));
118 EINA_LIST_FOREACH(clients, l, cl)
120 printf("%s\n", ecore_con_client_ip_get(cl));
121 free(ecore_con_client_data_get(cl));
124 printf("Server was up for %0.3f seconds\n",
125 ecore_con_server_uptime_get(svr));
127 ecore_con_shutdown();