Niedawno rozpocząłem współpracę z Boost Asio. Zauważyłem, że receive method of a TCP socket przyjmuje jako parametr parametr message_flags. Jednak dokumentacja, którą znalazłem dla message_flags, mówi tylko, że jest liczbą całkowitą bez podania poprawnych wartości. Jakie są wartości, które można przypisać do zmiennej message_flags i co one oznaczają?Zwiększ Asio message_flags
9
A
Odpowiedz
11
Szukałem przez chwilę i wreszcie próbowałem zajrzeć do kodu źródłowego Boost. Znalazłem to w socket_base.hpp:
/// Bitmask type for flags that can be passed to send and receive operations.
typedef int message_flags;
#if defined(GENERATING_DOCUMENTATION)
/// Peek at incoming data without removing it from the input queue.
static const int message_peek = implementation_defined;
/// Process out-of-band data.
static const int message_out_of_band = implementation_defined;
/// Specify that the data should not be subject to routing.
static const int message_do_not_route = implementation_defined;
#else
BOOST_STATIC_CONSTANT(int,
message_peek = boost::asio::detail::message_peek);
BOOST_STATIC_CONSTANT(int,
message_out_of_band = boost::asio::detail::message_out_of_band);
BOOST_STATIC_CONSTANT(int,
message_do_not_route = boost::asio::detail::message_do_not_route);
#endif
Na tej podstawie, wygląda message_peek
, message_out_of_band
i message_do_not_route
są możliwe wartości. Zamierzam spróbować i zobaczyć, czy mogę je zmusić do pracy.
0
Napotkano ten sam problem, a moim rozwiązaniem było użycie przeciążenia, które nie wymaga parametru message_flags (http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload1.html).
Minusem jest to, że jeśli chcesz błąd kod błędu raportowania nie można go używać (przeciążenie wykorzystuje wyjątek, a nie robi się ec param)
0
Powiązane problemy
- 1. Zwiększ Asio tcp :: resolver: usługa nie została znaleziona
- 2. Zwiększ ASIO: Jak serwer może wiedzieć, czy klient jest nadal podłączony?
- 3. boost :: asio :: async_write() kontra boost :: asio :: write()
- 4. Java2D: Zwiększ szerokość linii
- 5. Zwiększ liczbę, klikając przycisk
- 6. Zwiększ wydajność box-shadow
- 7. Zwiększ rozmiar nagłówka pdfMake
- 8. Zwiększ numeryczne Stałe Za
- 9. Zwiększ zadanie Shared_Ptr
- 10. Zwiększ prędkość openCover
- 11. Czy istnieje sposób, aby Asio działał bez Boost?
- 12. Nie można użyć asio :: placeholders :: błąd w niekompatybilnej wersji Asio
- 13. doładowanie asio i endian
- 14. Zwiększenie wdrożenia ASIO IO_SERVICE?
- 15. doładowanie :: asio emisja UDP
- 16. Gwintowe coroutiny z asio
- 17. Dziurkowanie z doładowaniem :: asio
- 18. Asio bez zwiększenia
- 19. boost :: asio przez SocketCAN
- 20. asio :: czytaj z timeoutem
- 21. ggplot Zwiększ odległość między boxplots
- 22. Android Studio - zwiększ ilość cofnięć
- 23. Zwiększ drzewo właściwości: usuń węzeł
- 24. Qt Zwiększ QTabWidget QTabBar rozmiar
- 25. Zwiększ szerokość menu rozwijanego bootstrap
- 26. Zwiększ rozmiar sterty w Javie
- 27. Zwiększ szerokość pola autouzupełniania md
- 28. Korzystanie z funkcji Zwiększ z uniwersalną aplikacją Windows 10
- 29. Zwiększenie buforowania ASIO nie działa
- 30. Testowanie i zwiększanie wydajności :: asio
Co powiesz na przekazanie 0 jako flagi? Czy nie da ci pożądanego zachowania? – russoue
Użyłem 0 i wydawało mi się dobrze –