Hi,
This simple C program seems to work differently on
hurd and on linux. While under linux the dataToRead
function returns 1 when a connection is up, under hurd
this function always returns 0.
Regards,
Giuseppe Scrivano
___________________________________
Nuovo Yahoo! Messenger: E' molto più divertente: Audibles, Avatar, Webcam, Giochi,
Rubrica… Scaricalo ora!
http://it.messenger.yahoo.it
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
int dataToRead(int);
int
main (void)
{
int server_socket, asock;
struct sockaddr_in sock_in, asock_in;
int err, backlog = 1, addrlen;
char send_buff[] = "HELLO WORLD!!!\n";
char recv_buff = ' ';
server_socket = socket (PF_INET, SOCK_STREAM, 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));
for(;;)
{
err = listen (server_socket, backlog);
addrlen = sizeof (struct sockaddr);
socklen_t ddrlen=0;
int datatoread;
do
{
datatoread = dataToRead(server_socket);
sleep(1);
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");
shutdown (asock, 2);
err = close(asock);
}
shutdown (server_socket, 2);
err = close (server_socket);
}
int dataToRead(int server_socket)
{
struct timeval tv;
fd_set readfds;
tv.tv_sec = 0;
tv.tv_usec = 500;
FD_ZERO(&readfds);
FD_SET(server_socket, &readfds);
select(server_socket+1, &readfds, NULL, NULL, &tv);
if (FD_ISSET(server_socket, &readfds))
return 1;
else
return 0;
}
_______________________________________________
Bug-hurd mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/bug-hurd