2012-01-13 5 views
1

1, 내 서버에 클라이언트 연결 2를 받아들이는 ServerSocket이 있습니다. 내 클라이언트가 소켓을 만들고 서버에 메시지를 보냅니다. 3, 서버가 메시지를 가져 와서 클라이언트에 응답합니다.Java 소켓 프로그래밍 : 서버 소켓이 통신을 시작할 수 있습니까?

그래서 항상 통신을 시작하는 클라이언트입니다.

초기 클라이언트 연결 후 어느 정도 시간이 지나면 서버는 클라이언트에 다른 메시지를 보내려고합니다. 그렇게 할 수 있습니까?

답변

5

클라이언트의 소켓 연결을 서버에 열려있는 상태로 유지하는 경우 예. 클라이언트는 항상 들어오는 데이터를 청취 할 필요가 있습니다.

그렇지 않으면 메시지를 보낸 후 서버 연결이 닫히면 클라이언트는 서버와 간격을두고 폴링해야합니다.

+0

+1 : 또는 "클라이언트"가 "서버"가 클라이언트에 연결할 수있는 서버 포트를 가질 수 있습니다. 그러나 클라이언트가 사용 가능할 때마다 연결 유지의 첫 번째 제안이 훨씬 더 빠릅니다 (훨씬 빠르고 더 효율적일 수도 있음) –

+1

사실, 연결하려면 서버 끝에서 클라이언트 목록을 유지해야합니다. 모두는 내가 원하는 것에 달려 있습니다. –

1

클라이언트는 항상 연결을 시작해야합니다. 클라이언트와 서버 간의 유일한 차이점입니다 (프로그램은 서버와 클라이언트 일 수 있습니다).

일단 연결이 설정되면 닫히지 않는 한 양측이 다른 쪽 (데이터를 수신하는 것으로 가정)으로 데이터를 보낼 수 있습니다.

관련 문제