2010-07-30 44 views
10

Tôi đã viết một ứng dụng Java đơn giản tương tác với nhiều phiên bản của chính nó bằng cách sử dụng các ổ cắm. Ví dụ đầu tiên sẽ tự động đảm nhiệm vai trò của máy chủ, lắng nghe trên một cổng cụ thể và tất cả các phiên bản tiếp theo sẽ kết nối với nó.Tránh Windows Firewall bật lên với Ổ cắm trên localhost

Sự cố tôi gặp phải là Windows Firewall bật lên hỏi tôi xem tôi có muốn bỏ chặn chương trình khỏi "chấp nhận kết nối mạng đến" hay không. Vấn đề là: nó không quan trọng nếu bạn rời khỏi ứng dụng bị chặn, bởi vì các trường hợp của ứng dụng luôn luôn trên cùng một máy, do đó, nó sẽ luôn luôn làm việc.

Câu hỏi của tôi là: tôi có thể thông báo cho Windows bằng cách nào đó rằng tôi thậm chí không muốn kết nối mạng đến được chấp nhận không?

+0

Làm rõ. Bạn muốn tường lửa của Windows tự động chặn tất cả các yêu cầu mạng trong nước? – Caladain

+1

Tôi muốn ổ cắm chỉ nghe trên máy cục bộ, * không * với lưu lượng mạng đến. Nói cách khác, tôi không muốn Windows Firewall hiển thị mọi pop up ngay từ đầu. –

Trả lời

12

Sử dụng three parameter constructor của lớp ServerSocket để chỉ định địa chỉ IP cũng như máy chủ nên lắng nghe. Bằng cách đó bạn có thể hạn chế máy chủ chỉ nghe trên 127.0.0.1, không giống như mặc định của 0.0.0.0. Xem this related SO question để biết thêm chi tiết.

EDIT: Tốt hơn nên sử dụng InetAddress.getByName (null) để lấy địa chỉ cục bộ.

+2

Tuyệt vời, công trình này! Tôi đã thử constructor đó với tham số cuối cùng là 'InetAddress.getLocalHost()', nhưng đó rõ ràng là địa chỉ mạng của localhost. Thay thế nó bằng 'InetAddress.getByName (null)' tránh tường lửa bật lên. –

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