반응형
서버에서 클라이언트로 메세지를 보내기 전에 먼저
접속이 현재 제대로 이루어져 있는지 확인해 보아야 한다.
/**
* 메세지를 모든 다른 클라이언트에게 보낸다.
*/
private void broadcast(Client fom, String message) {
// 연결이 끊겨진 클라이언트들을 잠시 저장하기 위해 사용
Vector zombies = new Vector(5);
Enumeration enum = clients.elements();
while ( enum.hasMoreElements() ) {
// 클라이언트 객체가 발송자인 경우 무시
if (client == from) {
continue;
}
if (client.socket == null) {
zombies.addElement(client);
continue;
}
client.sendMessage(message);
}
enum = zombies.elements();
while ( enum.hasMoreElements() ) {
Client client = (Client) enum.nextElement();
clients.removeElement(client);
}
}
메세지를 보낼때 문제가 생기면 try catch 부문에서 잡을 수도 있을것 같다.
하지만 어느게 성능이 더 좋은지 잘 모르겠다.
현재 있는 것은 다음과 같이 움직인다.
1. 살아 있나?
2. 살아 있으면 메세지 보냄
3. 죽어 있으면 Enumeration 에 저장
4. 메세지 전부 보낸후 각 Client 삭제 처리
하지만 메세지를 보낼때 문제가 생긴다면 다음과 같을것이다.
1. 메세지 보냄
2. 죽어 있으면
3. 죽어 있는 클라이언트 삭제
4. 살아 있으면 메세지 보냄.
첫번째것은 각 메세지를 보낼때마다 Enumeration 를 생성하는 로드.
두번째것은 죽은 클라이언트들에게 보내는 메세지 로드와 예외 처리 부분의 로드.
아직은 실력이 없어서 확인을 못 해 본다.
접속이 현재 제대로 이루어져 있는지 확인해 보아야 한다.
/**
* 메세지를 모든 다른 클라이언트에게 보낸다.
*/
private void broadcast(Client fom, String message) {
// 연결이 끊겨진 클라이언트들을 잠시 저장하기 위해 사용
Vector zombies = new Vector(5);
Enumeration enum = clients.elements();
while ( enum.hasMoreElements() ) {
// 클라이언트 객체가 발송자인 경우 무시
if (client == from) {
continue;
}
if (client.socket == null) {
zombies.addElement(client);
continue;
}
client.sendMessage(message);
}
enum = zombies.elements();
while ( enum.hasMoreElements() ) {
Client client = (Client) enum.nextElement();
clients.removeElement(client);
}
}
메세지를 보낼때 문제가 생기면 try catch 부문에서 잡을 수도 있을것 같다.
하지만 어느게 성능이 더 좋은지 잘 모르겠다.
현재 있는 것은 다음과 같이 움직인다.
1. 살아 있나?
2. 살아 있으면 메세지 보냄
3. 죽어 있으면 Enumeration 에 저장
4. 메세지 전부 보낸후 각 Client 삭제 처리
하지만 메세지를 보낼때 문제가 생긴다면 다음과 같을것이다.
1. 메세지 보냄
2. 죽어 있으면
3. 죽어 있는 클라이언트 삭제
4. 살아 있으면 메세지 보냄.
첫번째것은 각 메세지를 보낼때마다 Enumeration 를 생성하는 로드.
두번째것은 죽은 클라이언트들에게 보내는 메세지 로드와 예외 처리 부분의 로드.
아직은 실력이 없어서 확인을 못 해 본다.
반응형
'공부 > 컴퓨터' 카테고리의 다른 글
쪽팅 클라이언트 - 자바 스크립트가 실행할 메소드는 public로 잡을것 (0) | 2003.07.14 |
---|---|
쪽팅 클라이언트 - 스레드 실행 간격 0.2초 가능 (0) | 2003.07.14 |
서버를 만들때 주의해야 할점 - 블로킹 메소드 사용 금지 (0) | 2003.07.14 |
채팅만들때 유령방지법 (0) | 2003.07.14 |
IRCD를 이용한 채팅 서버 만들기 (0) | 2003.07.14 |