수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

주석 설명및 실행 목적에 대해 알켜주세요

엘보어

2023.04.01

제가아는 내용만 했는데요 나머지 좀 부탁드립니다.
import java.net.*; //네트워크 통신
import java.io.*; //입출력

public class ChatServer extends Thread {
protected final static int DEFAULTPORT=5000;
protected int portNum;
protected java.util.Vector clientVector; // clientVector를 전역변수로 사용
protected ServerSocket server;

public ChatServer() {
this(DEFAULTPORT); // 바로 밑에 있는 메소드(생성자 : ChatServer(int port))를 호출한 , 매개변수의 값은 5000임
}

public ChatServer(int port) {
portNum = port;
clientVector = new java.util.Vector(); // 배열을 선언
try {
server = new ServerSocket(port); // 서버 소켓 생성
} catch(IOException ex) {
System.out.println(ChatServer 클래스를 실행할 수 없습니다.);
ex.printStackTrace();
System.exit(1);
}
}

public void run() {
try {
System.out.println(서버 시작);
while(true) {
Socket client = server.accept(); // 클라이언트의 연결을 기다린다.
ChatProcessor cp = new ChatProcessor(client, this);
cp.start(); // ChatProcessor 클래스내의 run() 실행,, Thread 생성/실행
synchronized(clientVector) {
clientVector.addElement(cp); // 벡터 배열 clientVector에 Thread 첨가, 클래스 cp 첨가
}
}
} catch(IOException ex) {
System.out.println(클라이언트와 연결되지 않는 경우 에러가 발생!!!);
System.exit(1);
}
}

public static void main(String[] args) {
int port = -1;

if ( args.length == 0 ) { // 실행할때 매개 변수가 없을 경우
new ChatServer().start(); // 포트 5000을 사용하여 서버를 실행. 즉, ChatServer 클래스내의 run() 실행
} else if ( args.length == 1 ) {
try {
port = Integer.parseInt(args[0]); // 문자열을 정수형 숫자로 변환(포트번호)
new ChatServer(port).start(); // 서버를 실행. 즉, ChatServer 클래스내의 run() 실행
} catch(NumberFormatException ex) {
System.out.println(포트 번호가 잘못 됐습니다.);
}
}
}
}

class ChatProcessor extends Thread {
protected ChatServer server;
protected Socket socket;
protected BufferedReader is;
protected PrintWriter os;

public ChatProcessor(Socket socket, ChatServer server) {
this.server = server;
this.socket = socket;
&nbnbsp;
try {
is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
os = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
} catch(IOException ex) {
System.out.println(입출력 스트림을 열 때 에러가 발생하였습니다.);
}
}

public void run() {
try {
String message;

while(true) {
message = is.readLine(); // 사용자가 입력한 메시지를 읽어서
if (message != null)
sendToAll(message); // 다른 모든 사용자들에게 전달
else return;
}
} catch(IOException ex) {
// 예외 처리를 하지 않는다. 즉 생략.......
} finally {
try {
server.clientVector.removeElement(this); // 사용자가 채팅방을 나가면 이 부분이 수행됨..
is.close();
os.close();
socket.close();
} catch(IOException ex) {
System.out.println(소켓을 닫는 동안 에러가 발생하였습니다.);
}
}
}

public void sendToOne(String s) {
os.println(s);
}

public void sendToAll(String s) {
int clientNumber = server.clientVector.size(); // 사용중인 사용자의 수를 계산
for (int i=0;iclientNumber;i++) {
ChatProcessor cp = (ChatProcessor)server.clientVector.elementAt(i);
cp.sendToOne(s);
}
}
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2700579 (air + as3) smtp 이용해서 첨부파일 포함해서 메일 보내기 물보라 2025-07-06
2700524 클릭시 밑에 메뉴 나오게 (4) 새솔 2025-07-05
2700505 activex를 비쥬얼6.0으로 만들었는데요 비스타 배포시에 안되서 질문드립니다 (3) 참이 2025-07-05
2700452 c언어에서... 자료형 구분.... (3) 시내 2025-07-05
2700422 버전에 관해 질문 라온제나 2025-07-04
2700393 mysql이 갑자기!!!!!!!!!!!!!!!에러가;; (2) 소미 2025-07-04
2700359 3.0 ) SimpleButton 상태 강제 변경 (3) 희선 2025-07-04
2700304 ie8 전용핵 문의 (3) 여자 2025-07-03
2700281 이런경우 어떻게 코딩해야 표준에 따르는건가요? (6) 늘솜 2025-07-03
2700230 질문이여 ! 뿡뿡몬 2025-07-03
2700205 액션스크립트책 좀 추천해주세요. (10) 화이트캣 2025-07-02
2700173 자바 소스인데 어떤게 에러인지..? (1) 호빵녀 2025-07-02
2700142 하단이 붙어있는 가변 레이아웃구조 질문드립니다. 이플 2025-07-02
2700089 이미지를 사다리꼴로 비틀게 하는 액션코드가 있나요? (4) 여름 2025-07-01
2700033 배경에 그라데이션을 넣으려고 하는데요.. (4) 화이티 2025-07-01
2700005 [질문] TextField 객체의 실제 높이 알아오는 방법 ? 천사의눈물 2025-07-01
2699978 FileReferenceList를 이용하여 업로드시 자꾸 실행속도가 느리다는 팝업이... (10) 데이비드 2025-06-30
2699944 자바스크립트가 많은 사이트는... (6) 희나리 2025-06-30
2699918 브라우저마다 다른 input과 텍스트 정렬 (3) 늘봄 2025-06-30
2699887 동적텍스트를 그래픽으로?? (2) 족장 2025-06-30
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com