서버쪽>>>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
class Server {
private ServerSocket ss = null;
private Socket s =null;
public Server(int port) {
try {
ss = new ServerSocket(port);
System.out.println("@@에코 서버@@");
System.out.println("클라이언트의 접속 요청이 있을때까지 대기한다");
while(true) {
s = ss.accept();
ServerThread st = new ServerThread(s);
st.start();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
s.close();
ss.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
class ServerThread extends Thread {
Socket s;
BufferedReader br = null;
PrintWriter pw = null;
public ServerThread(Socket s) {
try {
this.s = s;
System.out.println(s.getInetAddress() + "로 부터 연결요청받음");
pw = new PrintWriter(this.s.getOutputStream());
br = new BufferedReader(new InputStreamReader(this.s.getInputStream()));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pw.close();
br.close();
this.s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
String str;
try {
while(true) {
str = br.readLine();
if (str == null || str.equals("bye"))
break;
pw.write(str);
pw.flush();
System.out.println(s.getInetAddress() + "의 메세지 : " + str);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pw.close();
br.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public class EchoServer1 {
public static void main(String[] args) {
new Server(9000);
}
}
클라이언트쪽>>>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
class Client {
private Socket s = null;
private BufferedReader kbr = null;
private BufferedReader sbr = null;
private PrintWriter pw = null;
public Client(String sAddress, int port) {
String str, message;
try {
System.out.println("@@에코 클라이언트@@");
s = new Socket(sAddress, port);
System.out.println("클라이언트가 서버에 연결됨");
kbr = new BufferedReader(new InputStreamReader(System.in));
sbr = new BufferedReader(new InputStreamReader(s.getInputStream()));
pw = new PrintWriter(s.getOutputStream());
while(true) {
System.out.print("서버로 보낼 메세지 입력 >>");
str = kbr.readLine();
if(str.equals("bye"))
break;
pw.println(str);
pw.flush();
message = sbr.readLine();
System.out.println(s.getInetAddress() + "로 부터 받은 메세지 : " + message);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pw.close();
sbr.close();
kbr.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public class EchoClient1 {
public static void main(String[] args) {
new Client("127.0.0.1", 9000);
}
}
댓글 0