我看不到在boost sockets上設置SO_SETFIB的任何選項。任何人有任何想法或指出我在正確的方向如何實現這一目標?升壓插座上的設置選項SO_SETFIB
2
A
回答
1
你會使用boost::asio::detail::socket_option::integer
套接字選項幫手模板:
typedef boost::asio::detail::socket_option::integer<SOL_SOCKET, SO_SETFIB> set_fib;
// ...
sock.set_option(set_fib(42));
1
如果Boost.Asio的不支持套接字選項,則可以創建或者GettableSocketOption和/或SettableSocketOption型需求的車型,以滿足那些需求。
socket::set_option()
接受模擬SettableSocketOption類型需求的對象。該模型必須提供返回合適的值的一些功能的SettableSocketOption型需求文檔被傳遞到POSIX setsockopt()
:
class option
{
int level(Protocol) const; // The 'level' argument.
int name(Protocol) const; // The 'name' argument.
const int* data(Protocol) const // The 'option_value' argument.
std::size_t size(Protocol) const // The 'option_len' argument.
};
人能想到socket.set_option(option)
,彷彿它是:
setsocketopt(socket.native_handle(), option.level(protocol),
option.name(protocol), option.data(protocol),
option.size(protocol));
議定書通過功能是Protocol類型要求的一個模型。
這裏是一個set_fib
類,它是SettableSocketOption的典範:
class set_fib
{
public:
// Construct option with specific value.
explicit set_fib(int value)
: value_(value)
{}
// Get the level of the socket option.
template <typename Protocol>
int level(const Protocol&) const { return SOL_SOCKET; }
// Get the name of the socket option.
template <typename Protocol>
int name(const Protocol&) const { return SO_SETFIB; }
// Get the address of the option value.
template <typename Protocol>
const int* data(const Protocol&) const { return &value_; }
// Get the size of the option.
template <typename Protocol>
std::size_t size(const Protocol&) const { return sizeof(value_); }
private:
int value_;
};
用法:
boost::asio::ip::tcp::socket socket(io_service);
// ...
set_fib option(42);
socket.set_option(option);
相關問題
- 1. 升壓線程和插座
- 2. 插座設置選項的解釋
- 3. 在非插座上的插座操作:在設置插座選項和裝訂插座時出錯
- 4. 升壓程序選項設置選項的最小值和最大值
- 5. 升壓程序選項允許設置輸入值
- 6. 設置超時升壓socket.connect
- 7. 升壓短耳 - 處理解析器和插座與shared_ptr的
- 8. 插座程序設置
- 9. 設置類的UITableView「隱藏」插座的插座部分
- 10. 把端口從升壓阿西奧插座
- 11. 升壓ASIO插座不斷出現在/ proc /進程/ FD
- 12. 升壓程序選項:相同的值的多個選項
- 13. 如何關閉所有客戶端插座連接的升壓asio服務器插座
- 14. 升壓程序選項例子
- 15. 升壓程序選項遍歷variables_map
- 16. 選擇()上的插座與超時
- 17. 插座,其屬性和SO_REUSEADDR選項
- 18. 使用Lucene設置字段升壓
- 19. 以編程方式設置插座UIBarButtonItem
- 20. 何時設置XIB插座屬性?
- 21. 查看插座沒有設置? (Xcode中)
- 22. 設置笨和棘輪插座
- 23. 無法爲NSTableView設置引用插座
- 24. 帶升壓的Qt項目
- 25. OS X上的Objective-C:以編程方式設置插座
- 26. VLC ActiveX插件的設置選項
- 27. 設置HTDS選項上Bluemix
- 28. 升壓程序選項添加選項語法
- 29. 的升壓方案選擇
- 30. 在macOS上使用升壓測試detect_memory_leaks選項
謝謝。我會嘗試。你能指點我的任何文件嗎?我不想設置套接字選項,我需要幫助在tcp :: resolver – 2015-02-23 15:35:11
方向@BTRNaidu不幸的是'set_option'接口('SettableSocketOption'概念)沒有記錄;您必須查看頭文件以瞭解如何使用它。 – ecatmur 2015-02-23 15:42:00
它確實有幫助。謝謝。但是現在我必須在解析器上設置套接字選項。你有一些代碼嗎? – 2015-02-23 17:32:35