inMsg.contains("종료")
대신 inMsg.equalsIgnoreCase("bye")
사용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 Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
BufferedReader in = null;
BufferedWriter out = null;
Scanner sc = new Scanner(System.in);
try {
serverSocket = new ServerSocket(12000);
System.out.println("연결 대기 중입니다");
socket = serverSocket.accept();
System.out.println("연결이 완료되었습니다");
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while (true) {
String inMsg = in.readLine();
if (inMsg.contains("종료")) {
System.out.println("상대방 : " + inMsg);
System.out.println("연결이 종료되었습니다");
break;
}
System.out.println("상대방 : " + inMsg);
System.out.print("메시지를 입력하세요 : ");
String outMsg = sc.nextLine();
out.write(outMsg + "\n");
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
sc.close();
out.close();
in.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
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 Client {
public static void main(String[] args) {
Socket socket = null;
BufferedReader in = null;
BufferedWriter out = null;
Scanner sc = new Scanner(System.in);
try {
socket = new Socket("localhost", 12000);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while (true) {
System.out.print("메시지를 입력하세요 : ");
String outMsg = sc.nextLine();
if (outMsg.contains("종료")) {
out.write("연결이 종료되었습니다");
out.flush();
System.out.println("연결이 종료되었습니다");
break;
}
out.write(outMsg + "\n");
out.flush();
String inMsg = in.readLine();
System.out.println("상대방 : " + inMsg);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
sc.close();
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Server를 실행합니다
Client를 실행합니다
Client가 실행되면 Server는 연결이 수락되고 내부 소켓이 생성됩니다
Client가 반갑게 인사합니다
Client의 메세지가 서버의 화면에 출력됩니다
Server가 답장을 보냅니다
Server의 메세지가 클라이언트의 화면에 출력됩니다
Client가 연결 종료를 요청하며 내부 리소스가 반환됩니다
Server도 연결이 종료되고 내부 리소스가 반환됩니다