\doxysection{ecore\+\_\+con\+\_\+server\+\_\+simple\+\_\+example.\+c}
\hypertarget{ecore_con_server_simple_example_8c-example}{}\label{ecore_con_server_simple_example_8c-example}Shows how to setup a simple server that accepts client connections and sends a "{}hello"{} string to them.

Shows how to setup a simple server that accepts client connections and sends a "{}hello"{} string to them. See the complete example description at \doxysectlink{ecore_con_server_simple_example_c}{Ecore\+\_\+\+Con -\/ Creating a server}{0}


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{comment}{//Compile\ with:}}
\DoxyCodeLine{\textcolor{comment}{//\ gcc\ -\/o\ ecore\_con\_server\_simple\_example\ ecore\_con\_server\_simple\_example.c\ \`{}pkg-\/config\ -\/-\/libs\ -\/-\/cflags\ ecore\ ecore-\/con\ eina`}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <stdio.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <Ecore.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <Ecore\_Con.h>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{struct\ }\_Client}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ sdata;}
\DoxyCodeLine{\};}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_add(\textcolor{keywordtype}{void}\ *data\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \textcolor{keywordtype}{int}\ type\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add}{Ecore\_Con\_Event\_Client\_Add}}\ *ev)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{char}\ welcome[]\ =\ \textcolor{stringliteral}{"{}hello!\ -\/\ sent\ from\ the\ server"{}};}
\DoxyCodeLine{\ \ \ Ecore\_Con\_Server\ *srv;}
\DoxyCodeLine{\ \ \ Ecore\_Con\_Client\ *cl;}
\DoxyCodeLine{\ \ \ \textcolor{keyword}{const}\ \mbox{\hyperlink{struct__Eina__List}{Eina\_List}}\ *clients,\ *l;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keyword}{struct\ }\_Client\ *client\ =\ malloc(\textcolor{keyword}{sizeof}(*client));}
\DoxyCodeLine{\ \ \ client-\/>sdata\ =\ 0;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Client\ with\ ip\ \%s,\ port\ \%d,\ connected\ =\ \%d!\(\backslash\)n"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gab02f9ae8613aca1de53996239dd5f7ea}{ecore\_con\_client\_ip\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}),}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga8aac792bcc08647c91e346255723ecdc}{ecore\_con\_client\_port\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}),}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga9f668e92d167f19ed81d3e70c060219f}{ecore\_con\_client\_connected\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}));}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga89f79f973aeea2505078d87cb7b045b3}{ecore\_con\_client\_send}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}},\ welcome,\ \textcolor{keyword}{sizeof}(welcome));}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga8eeeb449d9af80885a26309471330de9}{ecore\_con\_client\_flush}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga02e595c6d808c590822abd7c8e2109aa}{ecore\_con\_client\_timeout\_set}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}},\ 6);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gabe69c02ac5c0ef03e322a5d34904f858}{ecore\_con\_client\_data\_set}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}},\ client);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ srv\ =\ \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga70d6fe610ac62b88d14dc91ec5671bab}{ecore\_con\_client\_server\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}});}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Clients\ connected\ to\ this\ server:\(\backslash\)n"{}});}
\DoxyCodeLine{\ \ \ clients\ =\ \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga688ddcc88a17c527a6ea772a66bf53d6}{ecore\_con\_server\_clients\_get}}(srv);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\_LIST\_FOREACH}}(clients,\ l,\ cl)}
\DoxyCodeLine{\ \ \ \ \ printf(\textcolor{stringliteral}{"{}\%s\(\backslash\)n"{}},\ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gab02f9ae8613aca1de53996239dd5f7ea}{ecore\_con\_client\_ip\_get}}(cl));}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_del(\textcolor{keywordtype}{void}\ *data\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \textcolor{keywordtype}{int}\ type\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del}{Ecore\_Con\_Event\_Client\_Del}}\ *ev)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keyword}{struct\ }\_Client\ *client;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}})}
\DoxyCodeLine{\ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ client\ =\ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gadacc90bc2f169308e67a3efadfa49820}{ecore\_con\_client\_data\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Lost\ client\ with\ ip\ \%s!\(\backslash\)n"{}},\ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gab02f9ae8613aca1de53996239dd5f7ea}{ecore\_con\_client\_ip\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}}));}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (client)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}Total\ data\ received\ from\ this\ client:\ \%d\(\backslash\)n"{}},\ client-\/>sdata);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ free(client);}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Client\ was\ connected\ for\ \%0.3f\ seconds.\(\backslash\)n"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gaa2a166c0e95b48ab214a5d5ea52e9cce}{ecore\_con\_client\_uptime\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}}));}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gab961e9decd8dc44e4c04f2ceb0ce2e68}{ecore\_con\_client\_del}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_data(\textcolor{keywordtype}{void}\ *data\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \textcolor{keywordtype}{int}\ type\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data}{Ecore\_Con\_Event\_Client\_Data}}\ *ev)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{char}\ fmt[128];}
\DoxyCodeLine{\ \ \ \textcolor{keyword}{struct\ }\_Client\ *client\ =\ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gadacc90bc2f169308e67a3efadfa49820}{ecore\_con\_client\_data\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a2c3e5b340b67fde235d2da9814f3d413}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ snprintf(fmt,\ \textcolor{keyword}{sizeof}(fmt),}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Received\ \%i\ bytes\ from\ client\ \%s\ port\ \%d:\(\backslash\)n"{}}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}>>>>>\(\backslash\)n"{}}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\%\%.\%is\(\backslash\)n"{}}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}>>>>>\(\backslash\)n"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a6e87f88d094ec774fb22133a0632d8b3}{size}},\ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gab02f9ae8613aca1de53996239dd5f7ea}{ecore\_con\_client\_ip\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a2c3e5b340b67fde235d2da9814f3d413}{client}}),}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga8aac792bcc08647c91e346255723ecdc}{ecore\_con\_client\_port\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a2c3e5b340b67fde235d2da9814f3d413}{client}}),\ ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a6e87f88d094ec774fb22133a0632d8b3}{size}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ printf(fmt,\ ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a1e2cdb017a18b0515d2102edc016b4c5}{data}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ client-\/>sdata\ +=\ ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a6e87f88d094ec774fb22133a0632d8b3}{size}};}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{int}}
\DoxyCodeLine{main(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ Ecore\_Con\_Server\ *svr;}
\DoxyCodeLine{\ \ \ Ecore\_Con\_Client\ *cl;}
\DoxyCodeLine{\ \ \ \textcolor{keyword}{const}\ \mbox{\hyperlink{struct__Eina__List}{Eina\_List}}\ *clients,\ *l;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Main__Group_ga81b8137665b8a4d2cb38ca50017d4c74}{eina\_init}}();}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Init__Group_ga77757609684a2c922dc5ec398274751b}{ecore\_init}}();}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Lib__Group_ga8a20f47372627a03e86a8705a6f8a82d}{ecore\_con\_init}}();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!(svr\ =\ \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga8993f75b5a4948b6b3975575d807fb21}{ecore\_con\_server\_add}}(ECORE\_CON\_REMOTE\_TCP,\ \textcolor{stringliteral}{"{}127.0.0.1"{}},\ 8080,\ NULL)))}
\DoxyCodeLine{\ \ \ \ \ exit(1);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Event__Group_ga886c90c3f917f87b3b4c931adcbc41c5}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Con__Events__Group_ga4757b5128fed6457910b996a65577111}{ECORE\_CON\_EVENT\_CLIENT\_ADD}},\ (\mbox{\hyperlink{group__Ecore__Event__Group_ga64b4df04cbafda481593d0bc29617c6d}{Ecore\_Event\_Handler\_Cb}})\_add,\ NULL);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Event__Group_ga886c90c3f917f87b3b4c931adcbc41c5}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Con__Events__Group_gab6a527ae1614876cddf4630ff03ae1dc}{ECORE\_CON\_EVENT\_CLIENT\_DEL}},\ (\mbox{\hyperlink{group__Ecore__Event__Group_ga64b4df04cbafda481593d0bc29617c6d}{Ecore\_Event\_Handler\_Cb}})\_del,\ NULL);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Event__Group_ga886c90c3f917f87b3b4c931adcbc41c5}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Con__Events__Group_gaf909435b89ab32078adc52f0a18c70c7}{ECORE\_CON\_EVENT\_CLIENT\_DATA}},\ (\mbox{\hyperlink{group__Ecore__Event__Group_ga64b4df04cbafda481593d0bc29617c6d}{Ecore\_Event\_Handler\_Cb}})\_data,\ NULL);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga82e6c66eef006a627468f2ca4e619641}{ecore\_con\_server\_timeout\_set}}(svr,\ 10);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga6188bbadcdc4dc2f1878dd3fe18f6fb8}{ecore\_con\_server\_client\_limit\_set}}(svr,\ 3,\ 0);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}}();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ clients\ =\ \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga688ddcc88a17c527a6ea772a66bf53d6}{ecore\_con\_server\_clients\_get}}(svr);}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Clients\ connected\ to\ this\ server\ when\ exiting:\ \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ eina\_list\_count(clients));}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\_LIST\_FOREACH}}(clients,\ l,\ cl)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}\%s\(\backslash\)n"{}},\ \mbox{\hyperlink{group__Ecore__Con__Client__Group_gab02f9ae8613aca1de53996239dd5f7ea}{ecore\_con\_client\_ip\_get}}(cl));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ free(\mbox{\hyperlink{group__Ecore__Con__Client__Group_gadacc90bc2f169308e67a3efadfa49820}{ecore\_con\_client\_data\_get}}(cl));}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Server\ was\ up\ for\ \%0.3f\ seconds\(\backslash\)n"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga048038c956602aa0b6a0a4d2490ce11f}{ecore\_con\_server\_uptime\_get}}(svr));}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Con__Lib__Group_ga0e5e01c67f7135e16db0e8f17d087d99}{ecore\_con\_shutdown}}();}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Init__Group_ga768298b932f18d7e7593a447493e5cde}{ecore\_shutdown}}();}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Main__Group_ga5bf35513199d5220341437c05696285d}{eina\_shutdown}}();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ 0;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}

\end{DoxyCodeInclude}
 