From eba7daeebc79080ede43d440ee075b0ef7ca96eb Mon Sep 17 00:00:00 2001 From: Nakidai Date: Tue, 20 May 2025 00:33:49 +0300 Subject: Add code --- buc.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 buc.c (limited to 'buc.c') diff --git a/buc.c b/buc.c new file mode 100644 index 0000000..d54d0d1 --- /dev/null +++ b/buc.c @@ -0,0 +1,20 @@ +#include +#include +#include +#include + +char buf[512]; progress, all; +atoi(), err(), exit(), read(), write(); + +#define readbuf(sock) ((((progress = read((sock), buf, sizeof(buf))) == -1) && err(1, "read()") || !progress && exit(0)), progress) +#define sendbuf(sock, size) (write(sock, buf, size) == -1 && err(1, "write()")) + +main(argc, argv) char **argv; { + struct sockaddr_in addr = {AF_INET, htons(argc > 2 ? atoi(argv[1]) : 8604), inet_addr(argc > 1 ? argv[1] : "127.0.0.1")}; + struct pollfd fds[2] = {{0, POLLIN}, {0, POLLIN}}; + for ( (fds[1].fd = socket(AF_INET, SOCK_STREAM, 0)) == -1 && err(1, "socket()"), + connect(fds[1].fd, (void *)&addr, sizeof(addr)) == -1 && err(1, "connect()"); + ;) poll(fds, 2, -1) == -1 && err(1, "poll()"), + fds[0].revents & POLLIN && sendbuf(fds[1].fd, readbuf(0)), + fds[1].revents & POLLIN && sendbuf(1, readbuf(fds[1].fd)); +} -- cgit 1.4.1