간단한 채팅 룸, 클라이언트, 서버를 달성 소켓

seday08 패키지;

수입 java.io.BufferedWriter;
수입 java.io.OutputStream에;
수입 java.io.OutputStreamWriter;
가져 오기를 java.io.PrintWriter;
수입 java.net.Socket의;
수입 java.util.Scanner;

/ **
* @author xingsir
* 간단한 대화방 클라이언트
* /
공용 클래스 클라이언트 {
/ *
* java.net.Socket의 소켓
* 소켓은 기본 TCP 통신 프로토콜의 세부 사항을 캡슐화, 그것은 사용할 수 있습니다
* TCP 프로토콜 및 서비스 링크의 끝을 설립, 데이터 입출력 작업을 완료하고 서버 두 가지 흐름을 교환하는 것입니다
* /
개인 소켓 소켓; // 형 소켓의 객체 선언
// 생성자
공공 클라이언트 () {
은 try를 {

에서 System.out.println ( "서버에 연결 ...");
소켓 = 새로운 새로운 소켓 ( "localhost"를, 33069); // 포트 범위 0-65535
에서 System.out.println ( "서버에 성공적으로 연결되어 ! ");
} 캐치 (예외 E) {
e.printStackTrace (); 도움을 // 스택 출력 오류 정보를 찾아 해결 오류
}
}
/ *
* 방법 클라이언트가 작업을 시작
* /
(공공 무효 시작) {

{시도
OutputStream에 Socket.getOutputStream를 OUT = () 상기로 getOutputStream 방법 // Socket 객체 클라이언트는 실제로 서버에 송신 출력 스트림 데이터를 얻을 수있다.
의 OutputStreamWriter OSW = 새의 OutputStreamWriter (아웃) // 스위치 문자 바이트 스트림
의 BufferedWriter BW = 새의 BufferedWriter (OSW) ; // 스트림 버퍼
의 PrintWriter PW = 새로운 PrintWriter (BW, //, TRUE) 행 업데이트
(스캐너 스캐너 = 새로운 스캐너 System.in); // 콘솔 입력, 키보드 입력 정보 획득
(TRUE) {// 조건 진정한 동안
, 문자열 메시지 scanner.nextLine = ()
; pw.println (메시지)
}
} 캐치 (예외 E) {
E .printStackTrace (); 도움을 // 스택 출력 오류 정보를 찾아 해결 오류
}
}

공공 정적 무효 메인 (문자열 []에 args) {
// 클라이언트의 인스턴스를
클라이언트 클라이언트 = 새로운 새로운 클라이언트 ();
// 호출 방법의 개시
) (client.start 단계;

}

}

// ================================================ ===================================

seday08 패키지;

java.io.BufferedReader의 수입;
오기 때 java.io.IOException;
오기 java.io.InputStream를;
가져 java.io.InputStreamReader;
가져 java.net.ServerSocket에,
가져 java.net.Socket의]
/ **
* @author xingsir
* 서버
* /
공용 클래스 서버 {
개인 ServerSocket의 서버; // 유형의 ServerSocket의의 객체를 선언
// 생성자
(공개 서버) {
은 try {
에서 System.out.println ( "서버 시작 ...") ;
서버 = 새로운 새로운 ServerSocket의 (33069)은, 수를받은 // 포트
에서 System.out.println을 ( "서버 부팅이 완료!");
} 캐치 (IOException가 E) {
e.printStackTrace는 (); // 스택 출력 오류 메시지, 도움을 찾아하는 해결 오류
}
}
// 서버 작업 방법
공개 무효 시작 () {
은 try {
그동안 (true로) {
에서 System.out.println ( "클라이언트의 연결 요청 ...");
소켓 소켓 server.accept = (); // (수락)는 : 클라이언트에서 연결 요청을 수락하고, 소매를 반환 소켓
에서 System.out.println는 ( "클라이언트 링크!")
/ *
* 소켓 방법을 제공 다음는 getInputStream에게 InputStream에서 ()
* 소켓으로부터 송신되는 원격 컴퓨터로부터 판독 된 바이트의 입력 스트림에 의해 취득 바이트.
* /
Socket.getInputStream에서의 InputStream = ()
으로 변환 // 바이트 문자
= ( ". UTF-8"로) InputStreamReader InputStreamReader 새로운 새 ISR을
의 BufferedReader BR = 새로운 새로운 기능의 BufferedReader (ISR)를 // 블록이 판독 될 수 있고 문자열 행을 읽고

문자열 메시지 = NULL; // 선언 문자열 메시지, 초기화 빈
/ *
*이 작업을 읽기 문자열의 BufferedReader의 클라이언트 라인, 클라이언트 연결이 끊어 통해 단말기에서 전송
*으로 인해 클라이언트 시스템, 여기 서버 성능이 동일하지 않습니다 :
* 윈도우 클라이언트 연결을 끊가, ReadLine 메서드가 직접 예외를 throw 할 때
, ReadLine 메서드가 반환 널 (null) * 리눅스 클라이언트 연결을 끊을 때
* /
while 회 ((메시지 = br.readLine ( !)) = NULL) {
에서 System.out.println는 ( "클라이언트에서 메시지가 말했다 :"+ 메시지); // 인쇄 메시지 콘솔
}

}
} 캐치 (예외 E) {
e.printStackTrace (); 도움을 // 스택 출력 오류 정보를 찾아 해결 오류
}
}

정적 무효 메인 공개 (문자열 []에 args) {
// 서버 측 인스턴스화
, 서버 서버 = 새로운 새 서버 ()
server.start을 (); // 메소드를 호출
}

}

추천

출처www.cnblogs.com/xingsir/p/12053174.html