2010-02-10 25 views
8

Tôi nghĩ rằng QHostAddress là nó, nhưng nó kỳ lạ không cung cấp các phương pháp để xác nhận có hay không địa chỉ IP là hợp lệ (nữa, đã không được chấp nhận để Qt3).Qt có cung cấp lớp đại diện cho địa chỉ IP không?

Có ai biết không?

+0

Khi bạn nói "phương pháp để phê chuẩn hay không địa chỉ IP là hợp lệ", được giới thiệu đến bạn 'isIPv4Address() 'và' isIPv6Address() 'phương pháp hay cái gì khác? –

+0

Làm thế nào để bạn xác định "hợp lệ"? – PiedPiper

+0

@RA, có bạn là chính xác. Về cơ bản, tôi chỉ muốn có một lớp học mà sẽ có QString, và nói với tôi hay không QString là một địa chỉ IP hợp lệ. Tôi nghĩ rằng QHostAddress là một, nhưng có lẽ không. – sivabudh

Trả lời

5

Dưới đây là câu trả lời chính thức từ kỹ sư hỗ trợ Nokia, tên loại bỏ để bảo vệ sự riêng tư:

tôi đăng một câu hỏi trên stackoverflow.com như sau:

Does Qt provide a class that represents an IP address?

Bạn có thể thấy rằng ai đó đã đăng một giải pháp cho câu hỏi của tôi rồi.

Tuy nhiên, tôi muốn hỏi làm thế nào mà Nokia không chỉ cung cấp một phương pháp để

QHostAddress (như isValid()) sẽ kiểm tra tính hợp lệ địa chỉ host không?

Cảm ơn bạn đã đặt câu hỏi. Bạn có thể sử dụng phương thức isNull() để kiểm tra giá trị . Nó sẽ trả về true cho địa chỉ không hợp lệ: http://doc.qt.digia.com/4.6/qhostaddress.html#isNull

Hy vọng điều này sẽ hữu ích.

Kính trọng,

Hỗ trợ Kỹ sư, phát triển Qt Frameworks, Nokia

7

Có cách thay thế để sử dụng isIpv4Address()isIPv6Address(). Ví dụ:

QHostAddress address(myString); 
if (QAbstractSocket::IPv4Protocol == address.protocol()) 
{ 
    qDebug("Valid IPv4 address."); 
} 
else if (QAbstractSocket::IPv6Protocol == address.protocol()) 
{ 
    qDebug("Valid IPv6 address."); 
} 
else 
{ 
    qDebug("Unknown or invalid address."); 
} 

Xem thêm:

http://doc.qt.digia.com/4.6/qhostaddress.html#protocol

Hope this helps.

+0

Đủ tốt cho tôi. Cảm ơn bạn! – sivabudh

+0

Lạ thay cách Nokia không chỉ thực hiện một trong những phương pháp này trong QHostAddress.Tôi sẽ đặt một tấm vé để hỏi họ. – sivabudh

1

Giá trị bool trở lại của QHostAddress::setAddress(const QString &address) nói nếu chuỗi được phân tách thành công như một địa chỉ IPv4 hay IPv6.

QHostAddress addr; 
if (addr.setAddress(myString)) { 
    // valid 
} else { 
    // invalid 
} 

http://doc.qt.io/qt-5/qhostaddress.html#setAddress-5

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