현재 자바로 클라이언트/서버 애플리케이션을 개발 중이고 클라이언트 설계 방법을 생각할 수 없습니다.자바 클라이언트 설계
현재 다중 연결을 허용 할 수있는 서버가 있으며 모든 연결에는 명령을 수신하고 응답하는 루프가 있습니다. 서버는 다음과 같습니다.
try{
mIn = new DataInputStream(mSocket.getInputStream());
mOut = new DataOutputStream(mSocket.getOutputStream());
while(true){
byte tPackType = mIn.readByte();
switch(tPackType){
case PackType.LOGIN:
login();
break;
case PackType.REGISTER:
register();
break;
default:
}
}
}catch (IOException e){
mLog.logp(Level.WARNING, this.getClass().getName(), "run()", "IOException in run()", e);
}finally{
try{
mOut.close();
mIn.close();
mSocket.close();
}catch (IOException e){
e.printStackTrace();
}
}
이제 클라이언트는 기본적으로 서버에 요청을 보내는 여러 가지 방법으로 응답을 반환합니다. 서버에서 업데이트를받을 수 있어야합니다. 해결책을 찾는데 도움이 될 수있는 독서에 대한 제안 사항을 알려 주시면 감사하겠습니다. 내가 조사 할 수있는 패턴이 있습니까?
미리 감사드립니다.
옵션 3은 클라이언트가 서버에 연결하지만 서버가 연결을 통해 업데이트를 보낼 때까지 기다리는 것입니다. 이렇게하면 폴링을 피할 수 있지만 서버가 클라이언트에 연결을 다시 시작하는 것을 방지하여 방화벽이 관련되어있을 때 문제를 일으키는 경향이 있습니다. (이상한 점도 있습니다.) – Wyzard
@Wyzard : 올바르게 이해하고 있다면 클라이언트가 서버의 포트를 열고 아무것도하지 않고 열어두기를 원하십니까? – npinti
* 연결 *을 열지 만 예. ("포트 열기"는 들어오는 연결을 수신하거나 연결을 허용하도록 방화벽을 구성하는 것을 의미합니다.) 클라이언트는 서버의 주소를 알고 서버가 모든 클라이언트의 주소를 알 필요가 없으므로 연결을 시작합니다. 구애. 그러나 일단 연결되면 서버는 업데이트를 보낼시기를 알고 클라이언트는 그렇지 않습니다. 따라서 서버가 업데이트를 시작합니다. – Wyzard