[IT]/java
java.Network.EchoProgram(1:1)
givemebro
2021. 3. 19. 16:39
반응형


package step4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoServer {
public void go() throws IOException {
// 서버에 연결하여 통신하기 위해 Socket을 생성
ServerSocket serverSocket = null;
PrintWriter pw = null;
BufferedReader br = null;
String clientIp = null;
Socket socket = null;
try {
// socket 연결
serverSocket = new ServerSocket(7777);
System.out.println("**EchoServer 실행**");
// accept();
socket = serverSocket.accept();
// client IP
clientIp = socket.getInetAddress().toString();
// stream 생성
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream(), true);// true : auto flush(쓰자마자 바로 쏨)
while (true) {
String message = br.readLine();
if (message.equals("종료종료")) {
System.out.println("Echo프로그램을 종료합니다.");
break;
}
System.out.println(clientIp + " : " + message);
pw.println(message);
System.out.println(message + "를 " + clientIp + "로 보냄");
}
} finally {
if (socket != null) {
socket.close();
}
if (pw != null) {
pw.close();
}
if (br != null) {
br.close();
}
}
}
public static void main(String[] args) {
try {
new EchoServer().go();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package step4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import step1.IP;
public class EchoClient {
public void go() throws IOException {
// 서버에 연결하여 통신하기 위해 Socket을 생성
Socket socket = null;
PrintWriter pw = null;
Scanner scanner = null;
BufferedReader br = null;
try {
scanner = new Scanner(System.in);
socket = new Socket(IP.LOCAL, 7777);
System.out.println("**EchoServer접속완료**");
// in/out put stream 생성
pw = new PrintWriter(socket.getOutputStream(), true);
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (true) {
// 메세지 입력 받음
System.out.print("입력하거라: ");
String message = scanner.nextLine();
// 서버에 메세지 보냄
pw.println(message);
if (message.equals("종료종료")) {
System.out.println("Echo프로그램을 종료합니다.");
break;
}
System.out.println(message + "를 서버에게 보냄");
// 서버에게 돌려 받은 에코 메세지를 출력
System.out.println(br.readLine() + "from server");
}
} finally {
if (socket != null) {
socket.close();
}
if (pw != null) {
pw.close();
}
if (scanner != null) {
scanner.close();
}
if (br != null) {
br.close();
}
}
}
public static void main(String[] args) {
try {
new EchoClient().go();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package step1;
public interface IP {
//public static final 상수 : IP.LOCAL 로 접근
//나의 IP
String LOCAL="127.0.0.1";
//서버의 IP
String INST="221.150.136.4";
}
반응형