2010-10-04 10 views
24

Có ai biết nơi tìm thấy tham chiếu cho mã lỗi tăng hay không. Cụ thể, mã lỗi được trả về bởi trình xử lý socket không đồng bộ ?, Google và grepping các tệp tiêu đề đã điều chỉnh trống.Tham chiếu mã lỗi tăng cường

+0

Tôi không biết tăng, nhưng nếu bạn may mắn, bạn có thể nhận được cùng mã lỗi như những gì có trong 'errno. h'. Trên Linux, nó là '/ usr/include/asm-generic/errno-base.h' và'/usr/include/asm-generic/errno.h'), xem http://lxr.linux.no/linux/ bao gồm/asm-generic/errno-base.h và http://lxr.linux.no/linux/include/asm-generic/errno.h. – pts

+0

là câu hỏi của bạn đã được giải quyết chưa? –

+0

Vâng, xấu của tôi, tôi đã bị bỏ rơi. Các mã lỗi có nguồn gốc từ các mã hệ thống. Đối với Windows, chúng có thể tìm thấy ở đây: http://msdn.microsoft.com/en-us/library/ms681381%28VS.85%29.aspx. Đối với Linux, tiêu đề chính là /usr/incude/errno.h. Lưu ý rằng bạn sẽ phải tìm hiểu một chút về Linux vì các mã thực tế được lưu trữ trong một tệp ít người biết đến hơn, chẳng hạn như /usr/include/asm-generic/errno.h –

Trả lời

6

nhiều khả năng bạn muốn

nó được bao gồm trong ASIO documentation.

+0

'Không thể mở tệp bao gồm: 'boost/asio /errors.hpp ': Không có tệp hoặc thư mục nào' Bạn có chắc chắn về điều này không? Tôi sử dụng boost 1.55 và nó không hoạt động. Khác asio bao gồm gây ra không có vấn đề. –

+0

Trong Modular Boost (phiên bản của tôi là 1.6.1), tệp "error_codes.hpp" đang ở trong hệ thống/tăng tốc. Tất cả các mã lỗi đều được xác định trong một điều tra, nhưng hầu hết chúng được gán giá trị từ các macro hiện tại, ví dụ: address_family_not_supported = EAFNOSUPPORT. Các macro này được bổ sung bởi "boost/cerrno.hpp", nhưng phải được xác định bởi "errno.h" của hệ thống, "/usr/include/asm/errno.h". Các giá trị dường như được chuẩn hóa trên các hệ thống Unix/Linux, có nghĩa là chúng đủ dễ tìm kiếm, nhưng AFAIK/hiểu các định nghĩa Boost là một phần để loại bỏ loại hình này. cái đó có giúp ích không? –

40

tôi trích ra các giá trị lỗi từ ASIO/error.hpp trên Linux (Tôi đang sử dụng tiêu đề chỉ ASIO không đẩy mạnh :: ASIO bằng cách này), ở đây đó là:

asio::error::access_denied 13 
asio::error::address_family_not_supported 97 
asio::error::address_in_use 98 
asio::error::already_connected 106 
asio::error::already_started 114 
asio::error::broken_pipe 32 
asio::error::connection_aborted 103 
asio::error::connection_refused 111 
asio::error::connection_reset 104 
asio::error::bad_descriptor 9 
asio::error::fault 14 
asio::error::host_unreachable 113 
asio::error::in_progress 115 
asio::error::interrupted 4 
asio::error::invalid_argument 22 
asio::error::message_size 90 
asio::error::name_too_long 36 
asio::error::network_down 100 
asio::error::network_reset 102 
asio::error::network_unreachable 101 
asio::error::no_descriptors 24 
asio::error::no_buffer_space 105 
asio::error::no_memory 12 
asio::error::no_permission 1 
asio::error::no_protocol_option 92 
asio::error::not_connected 107 
asio::error::not_socket 88 
asio::error::operation_aborted 125 
asio::error::operation_not_supported 95 
asio::error::shut_down 108 
asio::error::timed_out 110 
asio::error::try_again 11 
asio::error::would_block 11 

Nếu bạn muốn tạo danh sách của riêng bạn, điều này sẽ giúp bạn tiết kiệm một vài phút sao chép và dán:

std::cout << "asio::error::access_denied " << asio::error::access_denied << std::endl; 
std::cout << "asio::error::address_family_not_supported " << asio::error::address_family_not_supported << std::endl; 
std::cout << "asio::error::address_in_use " << asio::error::address_in_use << std::endl; 
std::cout << "asio::error::already_connected " << asio::error::already_connected << std::endl; 
std::cout << "asio::error::already_started " << asio::error::already_started << std::endl; 
std::cout << "asio::error::broken_pipe " << asio::error::broken_pipe << std::endl; 
std::cout << "asio::error::connection_aborted " << asio::error::connection_aborted << std::endl; 
std::cout << "asio::error::connection_refused " << asio::error::connection_refused << std::endl; 
std::cout << "asio::error::connection_reset " << asio::error::connection_reset << std::endl; 
std::cout << "asio::error::bad_descriptor " << asio::error::bad_descriptor << std::endl; 
std::cout << "asio::error::fault " << asio::error::fault << std::endl; 
std::cout << "asio::error::host_unreachable " << asio::error::host_unreachable << std::endl; 
std::cout << "asio::error::in_progress " << asio::error::in_progress << std::endl; 
std::cout << "asio::error::interrupted " << asio::error::interrupted << std::endl; 
std::cout << "asio::error::invalid_argument " << asio::error::invalid_argument << std::endl; 
std::cout << "asio::error::message_size " << asio::error::message_size << std::endl; 
std::cout << "asio::error::name_too_long " << asio::error::name_too_long << std::endl; 
std::cout << "asio::error::network_down " << asio::error::network_down << std::endl; 
std::cout << "asio::error::network_reset " << asio::error::network_reset << std::endl; 
std::cout << "asio::error::network_unreachable " << asio::error::network_unreachable << std::endl; 
std::cout << "asio::error::no_descriptors " << asio::error::no_descriptors << std::endl; 
std::cout << "asio::error::no_buffer_space " << asio::error::no_buffer_space << std::endl; 
std::cout << "asio::error::no_memory " << asio::error::no_memory << std::endl; 
std::cout << "asio::error::no_permission " << asio::error::no_permission << std::endl; 
std::cout << "asio::error::no_protocol_option " << asio::error::no_protocol_option << std::endl; 
std::cout << "asio::error::not_connected " << asio::error::not_connected << std::endl; 
std::cout << "asio::error::not_socket " << asio::error::not_socket << std::endl; 
std::cout << "asio::error::operation_aborted " << asio::error::operation_aborted << std::endl; 
std::cout << "asio::error::operation_not_supported " << asio::error::operation_not_supported << std::endl; 
std::cout << "asio::error::shut_down " << asio::error::shut_down << std::endl; 
std::cout << "asio::error::timed_out " << asio::error::timed_out << std::endl; 
std::cout << "asio::error::try_again " << asio::error::try_again << std::endl; 
std::cout << "asio::error::would_block " << asio::error::would_block << std::endl;