+#include <jh.h>
+#include <unistd.h>
+
+int main(int argc, char **argv) {
+ if (argc != 3) xperror("invocation: <host> <port>", 0);
+ int s = netopen(argv[1], argv[2], JH_TCP_HINTS);
+ if (s < 0) {
+ fprintf(stderr, "unable to connect: %s\n", gai_strerror(s));
+ exit(1);
+ }
+ while (1) {
+ char buf[4096];
+ fprintf(stderr, "reading...\n");
+ ssize_t count = fail_on_neg(read(0, buf, sizeof(buf)), "read failed", 1);
+ if (count == 0) return 0;
+ fprintf(stderr, "read %zd chars, writing...\n", count);
+ ssize_t wcount = fail_on_neg(write(s, buf, count), "write failed", 1);
+ if (wcount == 0) {
+ fprintf(stderr, "zero write! ending.\n");
+ return 1;
+ }
+ if (wcount != count) {
+ fprintf(stderr, "wrong write size! ending.\n");
+ return 1;
+ }
+ }
+}