diff options
author | Dimitri Staessens <[email protected]> | 2016-03-22 15:27:23 +0100 |
---|---|---|
committer | Dimitri Staessens <[email protected]> | 2016-03-22 15:27:23 +0100 |
commit | eb46e3ddc161c543ea268c54f0c6db40019d25c1 (patch) | |
tree | ad998716754303d8bb791baaa6506835539a01f2 /src/tools/echo/echo_client.c | |
parent | 8d2ac4877bb14df8e10d13b61d5db6c5e11d87c3 (diff) | |
parent | 3c6f5161b2903c1bf59bcc959301a7390c3c5c79 (diff) | |
download | ouroboros-eb46e3ddc161c543ea268c54f0c6db40019d25c1.tar.gz ouroboros-eb46e3ddc161c543ea268c54f0c6db40019d25c1.zip |
Merged in sandervrijders/ouroboros/be (pull request #38)
tools: Simple echo application
Diffstat (limited to 'src/tools/echo/echo_client.c')
-rw-r--r-- | src/tools/echo/echo_client.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/tools/echo/echo_client.c b/src/tools/echo/echo_client.c new file mode 100644 index 00000000..2f80a52a --- /dev/null +++ b/src/tools/echo/echo_client.c @@ -0,0 +1,69 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * A simple echo application + * + * Sander Vrijders <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define CLIENT_AP_NAME "echo-client" + +#include <ouroboros/dev.h> +#include <ouroboros/rina_name.h> + +int client_main() +{ + int fd = 0; + int result = 0; + uint8_t buf[BUF_SIZE]; + char * message = "Client says hi!"; + ssize_t count = 0; + + fd = flow_alloc(SERVER_AP_NAME, NULL, + CLIENT_AP_NAME, NULL, + NULL, 0); + if (fd < 0) { + printf("Failed to allocate flow\n"); + return -1; + } + + result = flow_alloc_res(fd); + if (result < 0) { + printf("Flow allocation refused\n"); + flow_dealloc(fd); + return -1; + } + + if (flow_write(fd, message, strlen(message) + 1) == -1) { + printf("Failed to write SDU\n"); + flow_dealloc(fd); + return -1; + } + + count = flow_read(fd, buf, BUF_SIZE); + if (count < 0) { + printf("Failed to read SDU\n"); + flow_dealloc(fd); + return -1; + } + + printf("Server replied with %.*s\n", (int) count, buf); + + flow_dealloc(fd); + + return 0; +} |