void client_func(void *arg) { int i; ssize_t res; ssize_t total; char tmp[8]; struct sockaddr_in6 addr = { 0 }; t_rinoosocket *socket; t_rinoosched *sched = arg; socket = rinoo_socket(sched, &socket_class_tcp6); XTEST(socket != NULL); addr.sin6_port = htons(4242); addr.sin6_family = AF_INET6; addr.sin6_addr = in6addr_loopback; XTEST(rinoo_socket_connect(socket, (struct sockaddr *) &addr, sizeof(addr)) == 0); rinoo_log("client - connected"); rinoo_log("client - reading %d bytes", BUFFER_SIZE); for (i = 0; i < BUFFER_SIZE / 8; i++) { res = 0; total = 0; while (total < 8 && (res = rinoo_socket_read(socket, tmp + total, 8 - total)) > 0) { total += res; } if (res < 0) { rinoo_log("Error: %s", strerror(errno)); } XTEST(res > 0); XTEST(memcmp(tmp, "xxxxxxxx", 8) == 0); } rinoo_log("client - sending 'b'"); rinoo_log("client - reading %d bytes", BUFFER_SIZE); XTEST(rinoo_socket_write(socket, "b", 1) == 1); for (i = 0; i < BUFFER_SIZE / 8; i++) { res = 0; total = 0; while (total < 8 && (res = rinoo_socket_read(socket, tmp + total, 8 - total)) > 0) { total += res; } if (res < 0) { rinoo_log("Error: %s", strerror(errno)); } XTEST(res > 0); XTEST(memcmp(tmp, "xxxxxxxx", 8) == 0); } rinoo_log("client - sending 'b'"); XTEST(rinoo_socket_write(socket, "b", 1) == 1); rinoo_socket_destroy(socket); }
void task_client(void *socket) { char a; rinoo_socket_write(socket, "Hello world!\n", 13); rinoo_socket_read(socket, &a, 1); rinoo_socket_destroy(socket); }
struct sockaddr_in addr; sched = rinoo_sched(); XTEST(sched != NULL); server = rinoo_socket(sched, &socket_class_tcp); XTEST(server != NULL); addr.sin_port = htons(4242); addr.sin_family = AF_INET; addr.sin_addr.s_addr = 0; XTEST(rinoo_socket_bind(server, (struct sockaddr *) &addr, sizeof(addr), 42) == 0); rinoo_log("server listening..."); client = rinoo_socket_accept(server, (struct sockaddr *) &addr, (socklen_t *)(int[]){(sizeof(struct sockaddr))}); XTEST(client != NULL); rinoo_log("server - accepting client (%s:%d)", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port)); rinoo_log("server - sending 'abcdef'"); XTEST(rinoo_socket_write(client, "abcdef", 6) == 6); rinoo_log("server - receiving 'b'"); XTEST(rinoo_socket_read(client, &b, 1) == 1); XTEST(b == 'b'); rinoo_log("server - receiving nothing"); XTEST(rinoo_socket_read(client, &b, 1) == -1); rinoo_socket_destroy(client); rinoo_socket_destroy(server); rinoo_sched_destroy(sched); return NULL; } /** * Main function for this unit test. * * @return 0 if test passed