Hello,
Thanks.

I use  2.6.11-1 kernel ,Fedora Core 4.

Here is the program I use and the error I get after
I send one UDP packet to this machine on the port it listens on ,9000.

(Note : input.txt is a nonempty small input file.)


#include <sys/sendfile.h>
#include <sys/stat.h>
#include <sys/socket.h>

#include <netinet/in.h>

#include <stdio.h>
#include <stdlib.h>

#include <fcntl.h>
#include <errno.h>

#define MAXBUF 1024



int main()
    {
    int ret;
    int port = 9000;
                int sock;
                int fdSockOut=-1;

    int fdFileIn;
    int addrlen;
    struct stat stat_buf;
    char buf[MAXBUF];
    struct sockaddr_in addr;
    struct sockaddr_in udpClient;

    off_t offset = 0;
    memset(&addr,0,sizeof(addr));
    addr.sin_family      = AF_INET;
    addr.sin_addr.s_addr = INADDR_ANY;
    addr.sin_port        = htons(port);
    sock = socket(AF_INET,SOCK_DGRAM,0);

    if (sock == -1)
        {
        printf("cannot open socket\n");
        exit(1);
        }

    ret = bind(sock,(struct sockaddr*)&addr,sizeof(addr));
    if (ret == -1)
        {
        printf("could not bind\n");
        exit(1);
        }

    ret = recvfrom(sock,buf,MAXBUF,0,
(struct sockaddr*)&udpClient,&addrlen);

    printf("after recvFrom\n");

    fdFileIn= open("input.txt",O_RDONLY);
    if (fdFileIn == -1)
        {
        printf("cannot open file\n");
        exit(1);
        }
    // get the size of the file
    fstat(fdFileIn,&stat_buf);
    ret = sendfile(sock,fdFileIn,&offset,stat_buf.st_size);
    if (ret == -1)
        {
        perror("sendfile");
        printf("errno=%d\n",errno);
        }
    else
        {
        printf("sendfile succeeded\n");
        }

    }

                
The error  get is:

errno = ESPIPE
sendfile: Destination address required

Regards,
JQ              



On 11/8/05, Ian McDonald <[EMAIL PROTECTED]> wrote:
> > But when I am trying to write a user space program
> > which tries using sendfile with
> > UDP sockets I encounter erros. (with TCP sockets
> > sendfile works OK).
> >
> If you want help you need to supply more information. Please supply a
> small sample program and also the error messages. You should also
> supply what version of the kernel you are working on too.
>
> I would also suggest that it may be more appropriate to send your
> question to linux-net mailing list as this list for kernel networking
> developers. However you may have a genuine bug here but we can't tell
> yet.
>
> Ian
>
> --
> Ian McDonald
> http://wand.net.nz/~iam4
> WAND Network Research Group
> University of Waikato
> New Zealand
>
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to