bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Strange select behavior


From: Bas Wijnen
Subject: Re: Strange select behavior
Date: Mon, 01 Nov 2004 13:06:16 +0100
User-agent: Mozilla Thunderbird 0.8 (X11/20040926)

Giuseppe Scrivano wrote:
  server_socket = socket (PF_INET, SOCK_STREAM, 0);
Check if the call succeeded (server_socket >= 0)
/* address family. */
  sock_in.sin_family = PF_INET;
/* port used. */
  sock_in.sin_port = htons (8080);
  sock_in.sin_addr.s_addr = INADDR_ANY;
  err = bind (server_socket, (struct sockaddr *) &sock_in, sizeof (struct 
sockaddr_in));
Check if the call succeeded (err != -1)

  for(;;)
  {
    err = listen (server_socket, backlog);
    addrlen = sizeof (struct sockaddr);
    socklen_t ddrlen=0;
    int datatoread;
    do
    {
      datatoread = dataToRead(server_socket);
      sleep(1);
I don't understand why you need this with a nonzero timeout in select()...
      printf("datatoread: %i\n",datatoread);
    }
    while(!datatoread);
asock = accept (server_socket, (struct sockaddr *) &asock_in, &ddrlen);

    err = send (asock, &send_buff[0], strlen (send_buff), 0);
    if(err != strlen (send_buff))
      printf("Error sending to socket\n");
It is not an error for err to be < strlen (send_buff), as long as it is > 0. == 0 is in many cases not an error either, I think.

My guess is your problem comes from socket() or bind() failing. Check their return value, and errno.

Thanks,
Bas

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]