/* * A simple client-applikation that sends a string to a server and receives its answer. */ #include #include #include #include #include #include #include #define SOCKET_NAME "sockli" #define DATA "The time has come..." int main(void) { int sock, len; int n, result; char buf[256] = DATA; struct sockaddr_un addr = {0}; sock = socket(AF_UNIX, SOCK_DGRAM, 0); if(!sock) { perror("Socket could not be created"); exit(1); } /* setup the address */ /*addr.sin_family = AF_INET; addr.sin_port = 9836; addr.sin_addr.s_addr = inet_addr("127.0.0.1"); len = sizeof(addr); */ addr.sun_family = AF_UNIX; strcpy(addr.sun_path, SOCKET_NAME); len = sizeof(addr); n = sendto(sock, buf, strlen(buf), 0, (struct sockaddr *)&addr, len); if(n != strlen(buf)) { perror("sendto failed"); exit(1); } memset(buf, '\0', 256); unlink(SOCKET_NAME); addr.sun_family = AF_UNIX; strcpy(addr.sun_path, SOCKET_NAME); len = sizeof(addr); result = bind(sock, (struct sockaddr *)&addr, len); if(result < 0) { perror("Could not bind to socket"); exit(1); } n = recvfrom(sock, buf, 256, 0, (struct sockaddr *)&addr, &len); if(n < 1) { fprintf(stderr, "server3: received data of illigal size\n"); exit(1); } printf("SERVER REPLY: %s", buf); close(sock); }