2009-04-16 31 views
6

Khi làm lập trình socket, người luôn đặt tên struct addrinfo như thế này:gì là "gợi ý" có nghĩa là cho tên addrinfo trong ổ cắm lập trình

struct addrinfo hints; 
// get ready to connect 
status = getaddrinfo("www.example.net", "3490", &hints, &servinfo); 

Tôi muốn biết những gì nó đại diện cho cho sự hiểu biết tốt hơn .

Xin cảm ơn trước.


Cảm ơn câu trả lời. Có lẽ tôi đã không làm cho tôi rõ ràng.

Nhưng tôi muốn biết liệu tên biến "gợi ý" có phải là từ viết tắt của một số từ không? Hoặc nó chỉ là từ "gợi ý" có nghĩa là nó chỉ cung cấp một số thông tin địa chỉ và để cho hàm getaddrinfo() điền vào các phần còn lại?

Trả lời

5

Từ FreeBSD man page:

hints là một con trỏ tùy chọn để một addrinfo struct, theo định nghĩa của <netdb.h> ... Cấu trúc này có thể được sử dụng để cung cấp những gợi ý liên quan đến các loại ổ cắm mà sự hỗ trợ gọi hoặc muốn sử dụng.

Nó được gọi là "gợi ý" vì nó có thể được sử dụng để cung cấp, tốt, gợi ý (theo nghĩa của một mẹo; gợi ý có thể hữu ích nhưng có thể bỏ qua). Điều này cho thấy những thứ như gia đình giao thức nào (ví dụ như IPv4 và IPv6) người gọi muốn, loại socket (datagram so với straming), giao thức nào (TCP vs. UDP), v.v. Bạn có thể vượt qua NULL cho hints và do đó cho biết rằng bạn không quan tâm gia đình giao thức, loại socket hoặc giao thức nào bạn nhận được.

0

struct addrinfo hints; chỉ là một tuyên bố biến. Bản thân cấu trúc được định nghĩa trong thư viện và được bao gồm qua sys/socket.h.

2

Từ http://linux.die.net/man/3/getaddrinfo

Tham số gợi ý quy định cụ thể các loại ổ cắm ưa thích, hoặc giao thức. Một gợi ý NULL xác định rằng bất kỳ địa chỉ mạng hoặc giao thức nào đều được chấp nhận. Nếu tham số này không phải là NULL, nó trỏ đến cấu trúc addrinfo mà các thành viên ai_family, ai_socktype và ai_protocol chỉ định loại socket ưa thích. AF_UNSPEC trong ai_family chỉ định bất kỳ họ giao thức nào (ví dụ như IPv4 hoặc IPv6). 0 trong ai_socktype hoặc ai_protocol chỉ định rằng bất kỳ loại socket hoặc giao thức nào cũng được chấp nhận. Thành viên ai_flags chỉ định các tùy chọn bổ sung, được định nghĩa bên dưới. Nhiều cờ được chỉ định bằng cách hợp lý HOẶC gộp chúng lại với nhau. Tất cả các thành viên khác trong tham số gợi ý phải chứa 0 hoặc con trỏ null.

+0

Vì vậy, từ điều này, nó tuân theo mã ví dụ không chính xác như được hiển thị; nó không thực sự khởi tạo trường hints.ai_family. – unwind

0

Nó đề cập đến cùng ý nghĩa mà từ từ tiếng Anh "gợi ý" có nghĩa là. Và nó là không phải là viết tắt.