728x90
반응형
ServerEx. class
package Ex02;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerEx {
public static void main(String[] args) {
BufferedReader in = null;
BufferedWriter out = null;
ServerSocket server = null;
Socket socket = null;
Scanner sc = new Scanner(System.in);
try {
server = new ServerSocket(9001); //서버 소켓 생성
System.out.println("연결을 기다립니다.");
socket = server.accept(); //소켓 연결
System.out.println("연결 되었습니다.");
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true) {
String inputMessage = in.readLine(); //클라이언트로부터 한 행 읽기
if(inputMessage.equals("bye")) {
System.out.println("클라이언트가 종료되었습니다.");
break;
}
System.out.println("클라이언트 : " + inputMessage);
System.out.println("보내기 >> ");
String outputMessage = sc.nextLine();
out.write(outputMessage + "\n"); //키보드에서 읽은 문자열 전송
out.flush(); //out 스트림 버퍼에 있는 모든 문자열 전송
}
} catch (Exception e) {
System.out.println("채팅에 문제가 있습니다.");
}finally {
sc.close();
if(socket != null) {
try {
socket.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
ClientEx.class
package Ex02;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClientEx {
public static void main(String[] args) {
BufferedReader in = null;
BufferedWriter out = null;
Socket socket = null;
Scanner sc = new Scanner(System.in);
try {
socket = new Socket("IP주소", 9001); //통신을 위한 클라이언트 소켓 생성
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true) {
System.out.println("메세지 입력 >> ");
String outputMessage = sc.nextLine();
if(outputMessage.equals("bye")) {
out.write(outputMessage);
out.flush();
break;
}
out.write(outputMessage + "\n");
out.flush();
String inputMessage = in.readLine();
System.out.println("서버 : " + inputMessage);
}
} catch (Exception e) {
System.out.println("채팅에 오류가 있습니다.");
}finally {
sc.close();
if(socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
IP주소 부분에는 서버의 IP주소 값이 들어가야한다
728x90
반응형
'JAVA > 개념정리' 카테고리의 다른 글
[JAVA] insert values (0) | 2022.11.02 |
---|---|
[JAVA] 오라클 연동 (0) | 2022.11.02 |
[JAVA] BufferedReader와 Bufferedwriter (0) | 2022.10.28 |
[JAVA] HashMap<K,V> (0) | 2022.10.27 |
[JAVA] 특수 문자 표기법 (0) | 2022.10.26 |
댓글