Katruf Temat założony przez niniejszego użytkownika |
[WinSock] sprawdzenie czy klient coś wysłał » 2012-06-21 18:22:00 Witam piszę program, serwer, który obsługuje kilku klientów i szukam funkcji która by sprawdzała czy klient coś wysłał. Znalazłem w sieci WSARecv ale nie wiem jak jej użyć i czy to jest dobre rozwiązanie, czy mógłby mi ktoś pomóc?
Z góry dziękuje Katruf, |
|
kampar |
» 2012-06-21 18:34:58 |
|
Katruf Temat założony przez niniejszego użytkownika |
» 2012-06-21 19:32:34 jeśli dobrze rozumiem to chodzi o funkcję select() ale jak jej użyć? Czy mam ją wywoływać w pętli jeśli zwróci jakąś wartość to znaczy że mogę spokojnie pobrać wiadomość bez ryzyka zablokowania programu? |
|
DejaVu |
» 2012-06-21 20:03:57 Kurs wszystko omawia, a jeżeli nie to należy doczytać działanie poszczególnych funkcji w dokumentacji. Tak czy inaczej jeżeli tworzysz kod w oparciu o protokół TCP to drugi wątek jest wskazany do odbierania nadchodzących wiadomości. |
|
Admixior |
» 2012-06-21 22:45:35 hmm... Przykład Post z godziny: 2012-06-13 20:50:22Co prawda kiedyś napisałem go i się nie przydał, ale teraz... |
|
Katruf Temat założony przez niniejszego użytkownika |
» 2012-06-22 13:17:11 tylko że ta funkcja też blokuje program while(1){ i = select( 0, & grupa_read, 0, 0,&timeout ); if( i == 0 )return 0; else if( i == SOCKET_ERROR ) return - 1;
if( FD_ISSET( (int)context->sock, & grupa_read ) ) { recv(context->sock, inputBuffer, 512, 0); cout<<inputBuffer; send(context->sock, inputBuffer, 512, 0); } }
czy możesz mi powiedzieć co tu powinienem poprawić? |
|
pekfos |
» 2012-06-22 13:49:51 użyj gniazd nieblokujących. Masz je omówione w kursie. (Ale o wiele lepiej używać blokujących w oddzielnym wątku) |
|
Katruf Temat założony przez niniejszego użytkownika |
» 2012-06-22 16:00:32 to jest w nowym wątku, tylko ja chce aby możliwe było sprawdzenie czy ta druga strona coś przysłała, np klient się nie odzywa przez minute to żeby wysłać jakieś ponaglenie lub coś w tym stylu |
|
« 1 » 2 |