Kiểu dữ liệu nào được sử dụng cho địa chỉ IP?

Xin chào, tôi hiện đang làm việc trên một danh sách cấm và tôi đang suy nghĩ về việc chọn loại dữ liệu nào để lưu trữ địa chỉ IP trong cơ sở dữ liệu. Kiểu dữ liệu nhị phân có lý tưởng không?

mysql

0 0

Chia sẻ

  • 5 Cộng tác viên
  • 4 Trả lời
  • 337 Lượt xem
  • 2 tuần Khoảng thời gian thảo luận
  • Bài đăng mới nhất Bài đăng mới nhất của Vikas_30

Câu trả lời được đề xuất

Đã trả lời bởi Dani 3.354 trong một

Hiện tại tôi lưu trữ địa chỉ IP dưới dạng Varchar

Nhị phân dành cho dữ liệu nhị phân như hình ảnh, tệp thực thi, v.v. không phải văn bản

Tất cả 4 câu trả lời

rproffitt 2.382 "Không có gì để xem ở đây. " Người điều hành

1 năm trước

Tôi đang đọc https. //www. daniweb. com/programming/databases/threads/510152/the-best-way-to-store-ipv4-ipv6 cũng tiết lộ INET6_ATON và có thể chức năng khác mà bạn sẽ sớm hỏi về

0 0

Chia sẻ

Nhìn thấy lần cuối 20 giờ trước

Dani 3.354 Nữ hoàng của DaniWeb Quản trị viên Áp phích nổi bật Premium Member

1 năm trước

Hiện tại tôi lưu trữ địa chỉ IP dưới dạng Varchar

Nhị phân dành cho dữ liệu nhị phân như hình ảnh, tệp thực thi, v.v. không phải văn bản

1 0

Chia sẻ

jwenting 1.855 người chăn vịt Đồng nghiệp nhóm

1 năm trước

Lưu trữ chúng dưới dạng chuỗi. Trừ khi bạn muốn thực hiện chuyển đổi chuỗi thành số mỗi lần biến biểu diễn chuỗi quen thuộc thành định dạng số của nó, đó là cách nên làm

Nếu bạn muốn lưu trữ địa chỉ IP trong cơ sở dữ liệu mysql thì đừng nhầm khi sử dụng kiểu dữ liệu varchar vì bạn có thể sử dụng kiểu dữ liệu INT UNSIGNED 4(BYTE). sử dụng kiểu dữ liệu số nguyên, bạn có thể tiết kiệm nhiều dung lượng hơn trong cơ sở dữ liệu

khi bạn kích hoạt truy vấn chèn tại thời điểm đó, hãy sử dụng INET_ATON() và chọn truy vấn tại thời điểm đó, sử dụng INET_NTOA(). làm thế nào để sử dụng chức năng này đưa ra ví dụ dưới đây

Tạo bảng

CREATE TABLE IF NOT EXISTS `ip_addresses` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`ip_address` INT(4) UNSIGNED NOT NULL,

PRIMARY KEY (`id`)

);

Chèn dữ liệu

INSERT INTO `ip_addresses` (`ip_address`) VALUES (INET_ATON("127.0.0.1"));

Chọn dữ liệu

SELECT id, INET_NTOA(`ip_address`) as ip FROM `ip_addresses`;

Hãy thử điều này, điều này rất đơn giản

Chúng tôi có thể lưu trữ một địa chỉ IP với sự trợ giúp của INT unsigned. Trong khi sử dụng INSERT, hãy thêm INET_ATON() và với SELECT, hãy thêm INET_NTOA(). Địa chỉ IP ở định dạng chấm

Hãy để chúng tôi xem một ví dụ

Tạo bảng

mysql> create table IPV4AddressDemo -> ( -> `IPV4Address` INT UNSIGNED -> ); Query OK, 0 rows affected (0.52 sec)

Chèn địa chỉ IP vào bảng, với INET_ATON

mysql> insert into IPV4AddressDemo values(INET_ATON("120.0.0.1")); Query OK, 1 row affected (0.17 sec)

Để hiển thị tất cả các bản ghi

mysql> select *from IPV4AddressDemo;

Sau đây là đầu ra, nhưng chắc chắn chúng tôi muốn nó ở định dạng địa chỉ IP

+-------------+ | IPV4Address | +-------------+ | 2013265921 | +-------------+ 1 row in set (0.00 sec)

Vì đầu ra ở trên đưa ra một chuỗi các số nguyên, nhưng chúng ta có thể chuyển đổi chúng thành định dạng địa chỉ IP ban đầu. Đối với điều đó, hãy sử dụng INET_NTOA

Đây là một kiểu dữ liệu trừu tượng và không thể được sử dụng trực tiếp với các toán tử nhị phân hoặc nhị phân tiêu chuẩn C. Chỉ các biến cục bộ hoặc toàn cục kiểu ip_addr_t mới được hỗ trợ. Một biến thuộc loại này cũng có thể được lưu trữ trong một mảng liên kết dưới dạng khóa hoặc giá trị

Vue hỗ trợ các đặc điểm và hoạt động sau cho các biến loại địa chỉ IP

Khai báo biến địa chỉ IPip_addr_t i1; // global variable of type ip_addr_t __auto ip_addr_t i2; // auto variable of type ip_addr_t i2 = __ip4hdr->src_addr; // store source IP address in a local ip_addr_t variable. ip_aso[“src_ip_addr”] = __ip4hdr->src_addr; // store in an associative array.

Các vòng loại đã ký, chưa ký, đăng ký, tĩnh, luồng và nhân không được hỗ trợ cho các biến loại ip_addr_t

thao tác gán

Toán tử gán (=) cho phép một biến loại ip_addr_t được gán cho một biến loại ip_addr_t khác và nó cũng cho phép gán địa chỉ IP hoặc tên máy chủ không đổi cho biến loại ip_addr_t. Các giá trị ban đầu của biến bị ghi đè. Không cho phép truyền kiểu từ hoặc đến các kiểu biến ip_addr_t

Trong ví dụ sau, nội dung của ip_addr_t i1 được gán cho i2. ________số 8_______

thao tác so sánh

Chỉ có đẳng thức (==) và bất đẳng thức (. toán tử =) được phép cho các biến loại ip_addr_t. Việc so sánh chỉ được phép giữa hai biến loại ip_addr_t và với loại chuỗi không đổi (địa chỉ IP hoặc tên máy chủ được cung cấp trong dấu ngoặc kép “192. 168. 1. 1” hoặc “ví dụ. com")

Kết quả của toán tử đẳng thức là True (1) nếu cả hai chứa cùng loại địa chỉ IP (IPV4 hoặc IPV6) và các giá trị. hoặc Sai (0) ngược lại. Toán tử bất đẳng thức là lời khen chính xác của điều đó. Không có toán tử so sánh nào khác (>=, >, < hoặc =

Chủ đề