Shows how to setup a simple server that accepts client connections and sends a "hello" string to them. See the complete example description at Ecore_Con - Creating a server
#include <stdio.h>
#include <Ecore.h>
#include <Ecore_Con.h>
struct _Client
{
int sdata;
};
{
char welcome[] = "hello! - sent from the server";
struct _Client *client = malloc(sizeof(*client));
client->sdata = 0;
printf("Client with ip %s, port %d, connected = %d!\n",
printf("Clients connected to this server:\n");
}
{
struct _Client *client;
if (client)
{
printf("Total data received from this client: %d\n", client->sdata);
free(client);
}
printf("Client was connected for %0.3f seconds.\n",
}
{
char fmt[128];
snprintf(fmt, sizeof(fmt),
"Received %i bytes from client %s port %d:\n"
">>>>>\n"
"%%.%is\n"
">>>>>\n",
client->sdata += ev->
size;
}
int
main(void)
{
exit(1);
printf("Clients connected to this server when exiting: %d\n",
{
}
printf("Server was up for %0.3f seconds\n",
return 0;
}
const EAPI char * ecore_con_client_ip_get(const Ecore_Con_Client *cl)
Gets the IP address of a client that has connected.
Definition: ecore_con_legacy.c:739
struct _Ecore_Con_Client Ecore_Con_Client
Definition: Ecore_Con.h:332
EAPI void ecore_con_server_timeout_set(Ecore_Con_Server *svr, double timeout)
Sets the default time after which an inactive client will be disconnected.
Definition: ecore_con_legacy.c:2284
EAPI int ecore_con_shutdown(void)
Shuts down the Ecore_Con library.
Definition: ecore_con.c:133
#define EINA_LIST_FOREACH(list, l, _data)
Definition for the macro to iterate over a list.
Definition: eina_list.h:1415
#define EINA_UNUSED
Definition: eina_types.h:339
Ecore_Con_Client * client
the client that was lost
Definition: Ecore_Con.h:486
EAPI void ecore_con_client_data_set(Ecore_Con_Client *cl, const void *data)
Sets the data associated with the given client to data.
Definition: ecore_con_legacy.c:724
int size
the length of the data sent
Definition: Ecore_Con.h:545
void * data
the data that the client sent
Definition: Ecore_Con.h:544
EAPI int ECORE_CON_EVENT_CLIENT_ADD
A client has connected to the server.
Definition: ecore_con_legacy.c:157
Definition: Ecore_Con.h:541
int eina_init(void)
Initializes the Eina library.
Definition: eina_main.c:279
EAPI void ecore_con_client_flush(Ecore_Con_Client *cl)
Flushes all pending data to the given client.
Definition: ecore_con_legacy.c:767
const EAPI Eina_List * ecore_con_server_clients_get(const Ecore_Con_Server *svr)
Retrieves the current list of clients.
Definition: ecore_con_legacy.c:2277
Ecore_Event_Handler * ecore_event_handler_add(int type, Ecore_Event_Handler_Cb func, const void *data)
Adds an event handler.
Definition: ecore_events.c:13
#define ECORE_CALLBACK_RENEW
Return value to keep a callback.
Definition: Ecore_Common.h:153
struct _Ecore_Con_Server Ecore_Con_Server
Definition: Ecore_Con.h:318
Eina_Bool(* Ecore_Event_Handler_Cb)(void *data, int type, void *event)
Definition: Ecore_Common.h:603
EAPI Ecore_Con_Server * ecore_con_server_add(Ecore_Con_Type type, const char *name, int port, const void *data)
Creates a server to listen for connections.
Definition: ecore_con_legacy.c:1696
EAPI int ECORE_CON_EVENT_CLIENT_DATA
A client connected to the server has sent data.
Definition: ecore_con_legacy.c:166
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition: ecore_main.c:1298
int eina_shutdown(void)
Shuts down the Eina library.
Definition: eina_main.c:350
EAPI int ecore_con_client_send(Ecore_Con_Client *cl, const void *data, int size)
Sends the given data to the given client.
Definition: ecore_con_legacy.c:668
Definition: Ecore_Con.h:465
EAPI int ECORE_CON_EVENT_CLIENT_DEL
A client has disconnected from the server.
Definition: ecore_con_legacy.c:158
Ecore_Con_Client * client
the client that connected
Definition: Ecore_Con.h:467
EAPI Ecore_Con_Server * ecore_con_client_server_get(const Ecore_Con_Client *cl)
The server the client is connected to.
Definition: ecore_con_legacy.c:753
unsigned char Eina_Bool
Definition: eina_types.h:527
EAPI Eina_Bool ecore_con_client_connected_get(const Ecore_Con_Client *cl)
Returns whether the client is still connected.
Definition: ecore_con_legacy.c:690
EAPI int ecore_con_init(void)
Initializes the Ecore_Con library.
Definition: ecore_con.c:68
Definition: eina_list.h:317
EAPI double ecore_con_client_uptime_get(const Ecore_Con_Client *cl)
Checks how long a client has been connected.
Definition: ecore_con_legacy.c:760
EAPI int ecore_shutdown(void)
Shuts down connections, signal handlers sockets etc.
Definition: ecore.c:366
EAPI void * ecore_con_client_data_get(Ecore_Con_Client *cl)
Retrieves the data associated with the given client.
Definition: ecore_con_legacy.c:732
EAPI void ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char reject_excess_clients)
Sets a limit on the number of clients that can be handled concurrently by the given server,...
Definition: ecore_con_legacy.c:2267
EAPI int ecore_con_client_port_get(const Ecore_Con_Client *cl)
Returns the port that the client has connected to.
Definition: ecore_con_legacy.c:746
Ecore_Con_Client * client
the client that connected
Definition: Ecore_Con.h:543
EAPI void * ecore_con_client_del(Ecore_Con_Client *cl)
Closes the connection and free memory allocated to the given client.
Definition: ecore_con_legacy.c:711
Definition: Ecore_Con.h:484
EAPI double ecore_con_server_uptime_get(const Ecore_Con_Server *svr)
Checks how long a server has been connected.
Definition: ecore_con_legacy.c:2405
EAPI int ecore_init(void)
Sets up connections, signal handlers, sockets etc.
Definition: ecore.c:225
static unsigned int eina_list_count(const Eina_List *list)
Gets the count of the number of items in a list.
EAPI void ecore_con_client_timeout_set(Ecore_Con_Client *cl, double timeout)
Sets the time after which the client will be disconnected when inactive.
Definition: ecore_con_legacy.c:697