#include #include #include #include #include #include Result luna_main(int argc, char** argv) { StringView message; os::ArgumentParser parser; parser.add_description("A UNIX domain socket client, to test said sockets."); parser.add_system_program_info("socket-client"_sv); parser.add_positional_argument(message, "message"_sv, "exit"_sv); parser.parse(argc, argv); int sockfd = socket(AF_UNIX, SOCK_STREAM, 0); if (sockfd < 0) { perror("socket"); return 0; } struct sockaddr_un un; un.sun_family = AF_UNIX; strncpy(un.sun_path, "/tmp/local.sock", sizeof(un.sun_path)); if (connect(sockfd, (struct sockaddr*)&un, sizeof(un)) < 0) { perror("connect"); return 1; } char buf[4096]; ssize_t nread = read(sockfd, buf, sizeof(buf) - 1); if (nread > 0) { buf[nread] = 0; printf("Message from server: %s\n", buf); } write(sockfd, message.chars(), message.length()); close(sockfd); return 0; }