Tôi có một ứng dụng java (không chạy trong bất kỳ vùng chứa ứng dụng nào) mà lắng nghe trên một ServerSocket cho các kết nối. Tôi muốn nó chỉ chấp nhận các kết nối đến từ localhost. Hiện tại, sau khi kết nối được chấp nhận, nó kiểm tra IP ngang hàng và từ chối nó nếu nó không phải là địa chỉ loopback, nhưng tôi biết rằng các địa chỉ IP ngang hàng có thể bị giả mạo. Vì vậy, nếu có thể, tôi muốn liên kết với một socket chỉ lắng nghe trên giao diện loopback; điều này có thể không?Làm cách nào để có một socket chỉ chấp nhận các kết nối từ localhost (trong Java)?
Tôi đã thử một vài thứ khác nhau (chẳng hạn như chỉ định "127.0.0.1" làm địa chỉ cục bộ khi gọi hàm bind()) không có may mắn. Cảm ơn trước.
Cảm ơn tất cả sự giúp đỡ của bạn. Tôi xấu hổ khi thừa nhận rằng đây là tất cả những sai lầm của tôi. Ứng dụng của chúng tôi lắng nghe trên hai cổng khác nhau và tôi đã liên kết một cổng với giao diện loopback nhưng thử nghiệm với giao diện kia. Khi tôi thực sự cố gắng telnet đến cổng chính xác, mọi thứ hoạt động tốt (tức là, ràng buộc với "127.0.0.1" thực hiện chính xác những gì nó được cho là).
Để giả mạo địa chỉ lặp lại, các bạn đã đúng. Tôi không nên làm cho nó nghe như mối quan tâm chính. Thực sự, hành vi mong muốn là chỉ lấy các kết nối cục bộ và ràng buộc với giao diện cục bộ là cách trực tiếp hơn để đạt được điều đó hơn là chấp nhận tất cả các kết nối và sau đó đóng các kết nối không phải cục bộ.
Bạn lấy thông tin 127.0.0.1 ở đâu? Tôi hoài nghi. –