Annotation of 43BSDReno/sys/nfs/TEST/unix-tests/tools/udp.c, revision 1.1

1.1     ! root        1: /*     @(#)udp.c       1.1 88/10/12 NFS Rev 2 Testsuite        */
        !             2: /*
        !             3:  *  client for simple udp ping program.
        !             4:  *  send request to server, who will echo request back.
        !             5:  */
        !             6: #define UDP_PORT        3457
        !             7: 
        !             8: #include <stdio.h>
        !             9: #include <sys/types.h>
        !            10: #include <sys/socket.h>
        !            11: #include <netinet/in.h>
        !            12: #include <netdb.h>
        !            13: 
        !            14: main(argc, argv)
        !            15: char **argv;
        !            16: {
        !            17:        int s, len, ret;
        !            18:         struct sockaddr_in addr;        /* socket address */
        !            19:         int addrlen = sizeof(struct sockaddr_in);
        !            20:        struct hostent *hp;
        !            21:        char *peer;
        !            22:        char buf[BUFSIZ];
        !            23:        char *msg = "This is a test message!";
        !            24: 
        !            25:        if (argc != 2) {
        !            26:                fprintf(stderr, "usage: %s hostname\n", argv[0]);
        !            27:                exit(1);
        !            28:        }
        !            29:        peer = argv[1];
        !            30: 
        !            31:        if ((hp = gethostbyname(peer)) == NULL) {
        !            32:                fprintf(stderr, "Can't find host %s\n", peer);
        !            33:                exit(1);
        !            34:        }
        !            35: 
        !            36:         if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
        !            37:                 xxit("socket");
        !            38:        addr.sin_family = AF_INET;
        !            39:        addr.sin_port = htons(UDP_PORT);
        !            40:        addr.sin_addr = *(struct in_addr *)hp->h_addr;
        !            41:        fprintf(stderr, "Sending request to %s (%x)\n", peer, 
        !            42:                        addr.sin_addr.s_addr);
        !            43: 
        !            44:        strcpy(buf, msg);
        !            45:        len = strlen(buf);
        !            46: 
        !            47:        ret = sendto(s, buf, len, 0, &addr, addrlen);
        !            48:        fprintf(stderr, " sendto ret %d (len %d)\n", ret, len);
        !            49:        ret = recvfrom(s, buf, BUFSIZ, 0, &addr, &addrlen);
        !            50:        fprintf(stderr, " recvfrom ret %d\n", ret);
        !            51: 
        !            52:        if (ret != len || *buf != *msg + 1 || strcmp(buf+1, msg+1))
        !            53:                fprintf(stderr, "Message error: sent '%s' recv '%s'\n",
        !            54:                        msg, buf);
        !            55:        else
        !            56:                fprintf(stderr, "udp ping to %s ok\n", peer);
        !            57: }
        !            58: 
        !            59: xxit(s)
        !            60: char *s;
        !            61: {
        !            62:        perror(s);
        !            63:        exit(1);
        !            64: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.