2009-08-18 46 views
5

Trong C/C++, bạn có thể sử dụng lệnh gethostbyname() thông thường để biến chuỗi địa chỉ IP chấm chấm ("127.0.0.1" trong trường hợp localhost) thành cấu trúc phù hợp với tiêu chuẩn các cuộc gọi socket.Địa chỉ IP C++ Dạng người có thể đọc được

Bây giờ, bạn làm cách nào để dịch lại? Tôi biết tôi có thể làm một số bit-shifting để có được chính xác mà bộ bit tôi muốn và chỉ in ra, nhưng là có bất kỳ "tiêu chuẩn" chức năng để làm điều này cho tôi? Nó cho đầu ra vào các tệp nhật ký, vì vậy mà tôi "thực sự" biết ai/những gì tôi đang kết nối đến, và do đó một địa chỉ rải rác có thể đọc được của con người tốt hơn rất nhiều so với hex thô.

Cảm ơn.

Trả lời

10

Trước hết, trong mã mới, bạn thường nên sử dụng getaddrinfo() để gethostbyname(), cũ và phức tạp và khó sử dụng để hỗ trợ cả IPv4 và IPv6. Xem tại đây: http://beej.us/guide/bgnet/output/html/multipage/syscalls.html

Thứ hai, chức năng thực hiện những gì bạn muốn được gọi là inet_ntop.

+1

Tôi đánh dấu điều này là đúng, nhưng phát hiện ra nó không hoạt động trong các cửa sổ, nhưng đã thấy rằng các cuộc gọi chức năng đúng có inet_ntoa mà gần như cùng một điều. Nó không hỗ trợ IPv6 theo beej, nhưng nó nằm trong winsock.h bình thường cho người dùng win32. –

Các vấn đề liên quan