
package ch02_echo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
// 데이터 전송
public class EchoServer {
public static void main(String[] args) {
// 서버
// # 서버가 먼저 돌고있어야 클라이언트가 요청 가능
ServerSocket listener = null;
Socket socket = null;
// 한 번에 처리하기 위해 버퍼 사용
BufferedReader in = null;
try {
listener = new ServerSocket(10000); // 서버 소켓 생성
System.out.println("- Server 준비 -");
socket = listener.accept(); // 클라이언트로 부터 연결 요청 대기
// 클라이언트로 부터의 입력 스트림
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 클라이언트로 부터 한 행의 텍스트 읽기
String inPutmessage = in.readLine();
System.out.println("클라이언트 : " + inPutmessage);
} catch (Exception e) {
System.out.println("서버 Error");
} finally {
try {
if (in != null)
in.close();
if (socket != null)
socket.close();
if (listener != null)
listener.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package ch02_echo;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class EchoClient {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BufferedWriter out = null;
Socket socket = null;
try {
socket = new Socket("localhost", 10000);
System.out.println("서버 연결... ");
// 데이터 서버로 보내기 위한 통로
// 서버로 부터의 출력 스트림
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
System.out.print("전송 데이터 입력 > ");
String outMessage = sc.nextLine();
out.write(outMessage + "\n");
// flush() : 스트림 안의 데이터를 모두 전송
out.flush();
} catch (Exception e) {
System.out.println("클라이언트 Error");
} finally {
try {
if (out != null)
out.close();
if (socket != null)
socket.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
package ch03_chat;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ChatServer {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 서버
// # 서버가 먼저 돌고있어야 클라이언트가 요청 가능
ServerSocket listener = null;
Socket socket = null;
// 한 번에 처리하기 위해 버퍼 사용
BufferedReader sin = null;
// 출력 통로 생성
BufferedWriter sout = null;
try {
listener = new ServerSocket(10000); // 서버 소켓 생성
System.out.println("- Server 준비 -");
socket = listener.accept(); // 클라이언트로 부터 연결 요청 대기
// 클라이언트로 부터의 입력 스트림
// 서버 수신
sin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 서버 송신
sout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String inputMessage = null;
while(true) {
// 클라이언트가 전송한 데이터 읽기
inputMessage = sin.readLine();
if(inputMessage.equals("end")) {
System.out.println("연결 종료");
break;
}
System.out.println("sin : " + inputMessage);
System.out.println();
System.out.print("서버 입력 > ");
String outputMessage = sc.nextLine();
sout.write(outputMessage + "\n");
sout.flush();
}
} catch (Exception e) {
System.out.println("서버 Error");
} finally {
try {
if (sout != null)
sout.close();
if (sin != null)
sin.close();
if (socket != null)
socket.close();
if (listener != null)
listener.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package ch03_chat;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class ChatClient {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Socket socket = null;
BufferedReader cin =null;
BufferedWriter cout = null;
try {
socket = new Socket("localhost", 10000);
System.out.println("서버 연결... ");
// 데이터 서버로 보내기 위한 통로
// 서버로 부터의 출력 스트림
// 클라이언트 수신
cin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 클라이언트 송신
cout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String outputMessage = null;
while(true) {
System.out.print("클라이언트 입력 > ");
outputMessage = sc.nextLine();
if(outputMessage.equals("end")) {
cout.write(outputMessage + "\n");
cout.flush();
break;
}
cout.write(outputMessage + "\n");
cout.flush();
System.out.println();
// 서버가 전송한 데이터
String inputMessage = cin.readLine();
System.out.println("cin : " + inputMessage);
}
} catch (Exception e) {
System.out.println("클라이언트 Error");
} finally {
try {
if (cin != null)
cin.close();
if (cout != null)
cout.close();
if (socket != null)
socket.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
- Server 준비 -
sin : 안뇽
서버 입력 > 그래 안뇽
sin : 뭐라했냐
서버 입력 > 안녕이라 했다
연결 종료
package ch04_quiz;
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;
/*
* 클라이언트가 서버로 보낸 데이터를 서버가 받아서 더하는 코드를 작성하세요
* 클라이언트로 부터 -(minus) 값이 전송되면 계산을 멈추고 종료합니다
*/
public class CalcServer {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ServerSocket listener = null;
Socket socket = null;
BufferedReader sin = null;
BufferedWriter sout = null;
try {
listener = new ServerSocket(10000);
System.out.println("- Server Ready -");
socket = listener.accept();
sin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
sout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String inputInt1 = null;
String inputInt2 = null;
while (true) {
inputInt1 = sin.readLine();
inputInt2 = sin.readLine();
if (inputInt1.charAt(0)=='-'||inputInt2.charAt(0)=='-') {
System.out.println("end");
break;
}
System.out.println("num1 : " + Integer.parseInt(inputInt1) + " - num2 : " + Integer.parseInt(inputInt2) +" - sum : " + (Integer.parseInt(inputInt1) + Integer.parseInt(inputInt2)));
System.out.println();
System.out.println("다시 하려면 아무키나 입력하세요");
String anykey = sc.next();
sout.write(anykey +"\n");
sout.flush();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Server Error");
} finally {
try {
if (sout != null)
sout.close();
if (sin != null)
sin.close();
if (socket != null)
socket.close();
if (listener != null)
listener.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package ch04_quiz;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class CalcClient {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Socket socket = null;
BufferedReader cin = null;
BufferedWriter cout = null;
try {
socket = new Socket("localhost", 10000);
System.out.println("Server Conect...");
cin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
cout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String outputInt1 = null;
String outputInt2 = null;
while(true) {
System.out.print("더할 숫자 2개 입력 \n"
+ "ex) 1 2\n"
+ ">>");
outputInt1 = sc.next();
outputInt2 = sc.next();
if(outputInt1.charAt(0)=='-'||outputInt2.charAt(0)=='-') {
cout.write(Integer.parseInt(outputInt1) + "\n");
cout.write(Integer.parseInt(outputInt2) + "\n");
System.out.println("음수입력 ㄴㄴ");
cout.flush();
break;
}
cout.write(Integer.parseInt(outputInt1) + "\n");
cout.write(Integer.parseInt(outputInt2) + "\n");
cout.flush();
System.out.println();
int inputMessage = cin.read() + cin.read();
System.out.println("다시 시작");
}
} catch (Exception e) {
System.out.println("Client Error");
} finally {
try {
if(cin != null) cin.close();
if(cout != null) cout.close();
if(socket != null) socket.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
package ch04_quizT;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 클라이언트가 서버로 보낸 데이터를 서버가 받아서 더하는 코드를 작성하세요
* 클라이언트로 부터 -(minus) 값이 전송되면 계산을 멈추고 종료합니다
*/
public class CalcServer {
public static void main(String[] args) {
// 서버
ServerSocket listener = null;
Socket socket = null;
BufferedReader sin = null;
BufferedWriter sout = null;
int sum = 0; // 합
try {
listener = new ServerSocket(10000);
System.out.println("- 계산 준비 -");
socket = listener.accept();
sin = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 서버 수신
sout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));// 서버 송신
String inputMessage = null;
while(true) {
inputMessage = sin.readLine(); // 클라이언트가 전송한 데이터 읽기
int data = Integer.parseInt(inputMessage);
if(data < 0) {
sout.write("결과 : " + sum + "\n");
sout.flush();
break;
}
sum += data;
sout.write("합 : " + sum + "\n");
sout.flush();
}
} catch (Exception e) {
System.out.println("서버 error~");
} finally {
try {
if(sout != null) sout.close();
if(sin != null) sin.close();
if(socket != null) socket.close();
if(listener != null) listener.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package ch04_quizT;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class CalcClient {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 클라이언트
Socket socket = null;
BufferedReader cin = null;
BufferedWriter cout = null;
try {
socket = new Socket("localhost", 10000);
System.out.println("서버 연결...");
cin = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 클라이언트 수신
cout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // 클라이언트 송신
String outputMessage = null;
while(true) {
System.out.print("클라이언트 입력 > ");
outputMessage = scanner.nextLine();
try {
// 입력값이 숫자 형태인지 확인
int data = Integer.parseInt(outputMessage);
// 정상이면 전송
cout.write(outputMessage + "\n");
cout.flush();
String calcResult = cin.readLine(); // 서버로부터 받은 데이터
System.out.println(calcResult);
if(data < 0)
break;
} catch (Exception e) {
System.out.println("숫자가 아닙니다~");
}
} // while
} catch (Exception e) {
System.out.println("클라이언트 error~");
} finally {
try {
if(cin != null) cin.close();
if(cout != null) cout.close();
if(socket != null) socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}