Shack
11-12-2002, 16:12
Hi nochmal,
habe gestern schon mal angefragt, wie man es macht das ein Client ständig in der Lage
ist Daten zu empfangen.
Hab darauf als Tip die Funktion select() bekommen.
Leider funkt es aber nicht so wie ich es will. Will sagen er empfängt nur einmnal
und rennt dann durch dei Schleife ohne auf neue Daten zu reagiern.
Hab mal mein Code rangehängt ( vereinfacht ) , vieleicht kann mir ja jemand auf die Sprünge helfen.
Vielen Dank
Shack
connect(sock, (struct sockaddr *)&host_addr, sizeof(host_addr))==-1)
fcntl( sock, F_SETFL, mode | O_NONBLOCK);
FD_ZERO( &readfd);
FD_SET( sock, &readfd);
while( 1 ) {
select( sock +1 , &readfd, &writefd, NULL, NULL );
if( FD_ISSET( sock, &readfd) )
size = recv(sock, buffer, 1000, 0);
printf("Getting %d Bytes of Data\nData:%s\n",size,buffer);
} //while
habe gestern schon mal angefragt, wie man es macht das ein Client ständig in der Lage
ist Daten zu empfangen.
Hab darauf als Tip die Funktion select() bekommen.
Leider funkt es aber nicht so wie ich es will. Will sagen er empfängt nur einmnal
und rennt dann durch dei Schleife ohne auf neue Daten zu reagiern.
Hab mal mein Code rangehängt ( vereinfacht ) , vieleicht kann mir ja jemand auf die Sprünge helfen.
Vielen Dank
Shack
connect(sock, (struct sockaddr *)&host_addr, sizeof(host_addr))==-1)
fcntl( sock, F_SETFL, mode | O_NONBLOCK);
FD_ZERO( &readfd);
FD_SET( sock, &readfd);
while( 1 ) {
select( sock +1 , &readfd, &writefd, NULL, NULL );
if( FD_ISSET( sock, &readfd) )
size = recv(sock, buffer, 1000, 0);
printf("Getting %d Bytes of Data\nData:%s\n",size,buffer);
} //while