2012-10-29 15 views
7

Theo trang web này, http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html nó nói này:Knock Knock máy chủ

Server: "Knock gõ!"

Khách hàng: "Ai đó?"

Máy chủ: "Dexter".

Khách hàng: "Dexter who?"

Máy chủ: "Dexter halls với boughs of holly."

Khách hàng: "Groan".

Tôi nghĩ rằng nếu máy chủ đang nghe trên một cổng mà nó đang chờ đợi một tiếng gõ, vì vậy khách hàng sẽ gõ cửa và máy chủ sẽ nói rằng ai đang ở đó. Tôi đã kiểm tra các trang web khác là tốt và đã nhìn thấy cùng một khách hàng/máy chủ phản ứng.

Ai đó có thể giải thích lý do tại sao điều này không đúng?

+3

Khách hàng có nên bắt đầu bằng knock-knock không? Tôi nghĩ rằng giao thức là ngược ;-) –

+1

@ Joachim Tôi nghĩ đó là điểm của câu hỏi. Tôi đồng ý ví dụ này có vẻ ngược lại và rất khó hiểu. – DNA

+0

Vâng, có vẻ như tôi chưa đọc câu hỏi đủ đầy đủ: từ giao thức * * quan điểm có nghĩa là máy chủ là người đầu tiên giao tiếp, vì thường là trường hợp (HTTP là loại ngoại lệ ở đây) theo thứ tự để cho khách hàng biết máy chủ nào (phiên bản phần mềm, khả năng, ...) mà khách hàng đã kết nối. Từ góc độ * trò đùa *, khách hàng (tức là người "kết nối") chắc chắn có nghĩa là bắt đầu cuộc trò chuyện gõ cửa. –

Trả lời

12

Đó tutorial nói:

Khi bạn nhận được thành công một kết nối giữa client và server, bạn sẽ thấy dòng chữ sau đây được hiển thị trên màn hình của bạn:

Server: Knock! Knock! 

Vì vậy, nó thực sự là client khởi tạo giao thức (trong các điều khoản mạng) nhưng máy chủ khởi tạo trò đùa (trong các điều khoản đàm thoại). Mà tôi đồng ý là khá khó hiểu.

Nó có thể hữu ích nếu bạn nghĩ về nó như một máy chủ trò chuyện - để có được một trò đùa, bạn phải yêu cầu một! Nếu đó là cách khác, bạn sẽ có một máy chủ chỉ nghe những câu chuyện cười, điều này không hữu ích (trừ khi bạn hoàn toàn không có bạn bè).