KITRI/JAVA
Java νλ‘κ·Έλλ° - μ±ν νλ‘κ·Έλ¨
λν¨λ
2020. 5. 25. 15:37
μ±ν νλ‘κ·Έλ¨
ServerReceiver.java
package network06.Chat;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.SocketException;
public class ServerReceiver extends Thread{
private Socket socket;
public ServerReceiver(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()), 512);
while(true) {
String inputMsg = br.readLine();
if(inputMsg.equalsIgnoreCase("Q")) {
System.out.println("μ±ν
λ°©μ λκ°μ
¨μ΅λλ€.");
break;
}
System.out.println(inputMsg);
}
} catch (NullPointerException | SocketException e) {
System.out.println("μ±ν
μ΄ μ’
λ£λμμ΅λλ€."); //ν΄λΌμ΄μΈνΈμμ socket close null λ°ν
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(br!=null) br.close();
if(socket!=null) socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
ServerEx.java
package network06.Chat;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerEx {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8989);
System.out.println("μλ² μ±ν
μ€λΉμ€...");
Socket socket = serverSocket.accept();
ServerReceiver receiver = new ServerReceiver(socket);
receiver.start();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(serverSocket!=null) serverSocket.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
ClientSender.java
package network06.Chat;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClientSender extends Thread{
private Socket socket;
private String nickName;
public ClientSender(Socket socket, String nickName) {
this.socket = socket;
this.nickName = nickName;
}
@Override
public void run() {
BufferedWriter bw = null;
PrintWriter pw = null;
Scanner sc = null;
try {
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()), 512);
pw = new PrintWriter(bw);
sc = new Scanner(System.in);
while(true) {
String outputMsg = sc.nextLine();
if(outputMsg.equalsIgnoreCase("q")) {
pw.println(outputMsg);
pw.flush();
break;
}
pw.println(nickName + ">>>" + outputMsg);
pw.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(bw!=null) bw.close();
if(pw!=null) bw.close();
if(sc!=null) bw.close();
if(socket!=null) socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
ClientEx.java
package network06.Chat;
import java.net.Socket;
public class ClientEx {
public static void main(String[] args) {
if(args.length!=1) {
System.out.print("λλ€μ νλλ§ μ
λ ₯νμΈμ:");
return;
}
try {
String nickName = args[0];
Socket socket = new Socket("λ΄ μμ΄νΌ μ£Όμ", 8989);
ClientSender sender = new ClientSender(socket, nickName);
sender.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
network > chat ν΄λμ μμ±ν μλ°νμΌμ 볡μ¬ν΄μ λΆμ¬λ£κΈ°νλ€.
λ©λͺ¨μ₯μΌλ‘ μ΄κ³ λ ν ν¨ν€μ§λͺ μ μ§μ°κ³ , λ€λ₯Έμ΄λ¦μΌλ‘ μ μ₯ > ansiλ‘ νκ³ λͺ¨λ νμΌ
C:\sohyunkim\java\network\chat
λ¨μ²΄ μ±ν νλ‘κ·Έλ¨
ClientEx.java
package network07.ChatMulti;
import java.net.Socket;
public class ClientEx {
public static void main(String[] args) {
try {
Socket socket = new Socket("192.168.0.23", 7575);
ClientSender sender = new ClientSender(socket, "haha");
sender.start();
ClientReceiver receiver = new ClientReceiver(socket);
receiver.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ClientReceiver.java
package network07.ChatMulti;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.SocketException;
public class ClientReceiver extends Thread{
private Socket socket;
public ClientReceiver(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()), 512);
while(true) {
String inputMsg = br.readLine();
if(inputMsg.equalsIgnoreCase("Q")) {
System.out.println("μ±ν
λ°©μ λκ°μ
¨μ΅λλ€.");
break;
}
System.out.println(inputMsg);
}
} catch (NullPointerException | SocketException e) {
System.out.println("μ±ν
μ΄ μ’
λ£λμμ΅λλ€.");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(br!=null) br.close();
if(socket!=null) socket.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
}
ClientSender.java
package network07.ChatMulti;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClientSender extends Thread{
private Socket socket;
private String nickName;
public ClientSender(Socket socket, String nickName) {
this.socket = socket;
this.nickName = nickName;
System.out.println("μ±ν
μμμ
λλ€.");
}
@Override
public void run() {
BufferedWriter bw = null;
PrintWriter pw = null;
Scanner sc = null;
try {
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()), 512);
pw = new PrintWriter(bw);
sc = new Scanner(System.in);
while(true) {
String outputMsg = sc.nextLine();
if(outputMsg.equalsIgnoreCase("q")) {
pw.println(outputMsg);
pw.flush();
break;
}
pw.println(outputMsg);
pw.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(bw!=null) bw.close();
if(pw!=null) pw.close();
if(sc!=null) sc.close();
if(socket!=null) socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
ServerArr.java
package network07.ChatMulti;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ServerArr extends Thread{
private Socket socket;
public static List<PrintWriter> list = Collections.synchronizedList(new ArrayList<PrintWriter>());
private PrintWriter pw;
public ServerArr(Socket socket) { //[0]pw νκΈΈλ/ [1]pw κΉκΈΈλ
this.socket = socket;
sendArr();
}
public void sendArr() {
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()), 152);
pw = new PrintWriter(bw);
list.add(pw);
} catch(Exception e) {
e.printStackTrace();
}
}
public void sendPrintAll(String str) {
for(PrintWriter pw:list) {
pw.println(str);
pw.flush();
}
}
@Override
public void run() {
BufferedReader br = null;
String nickName = null;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()), 512);
nickName = br.readLine();
sendPrintAll("#" + nickName + "λμ΄ λ€μ΄μ€μ
¨μ΅λλ€.");
while(true) {
String inputMsg = br.readLine();
if(inputMsg.equalsIgnoreCase("Q")) {
sendPrintAll("#" + nickName + "λμ΄ μ±ν
λ°©μ λκ°μ΅λλ€.");
break;
}
sendPrintAll(nickName + ">>" + inputMsg);
}
} catch(SocketException | NullPointerException e) {
sendPrintAll("#" + nickName + "λμ΄ μ±ν
λ°©μ λκ°μ΅λλ€.");
} catch (Exception e) {
}
}
}
ServerEx.java
package network07.ChatMulti;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerEx {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(7575);
System.out.println("μλ² μ±ν
μ€λΉμ€...");
while(true) {
Socket socket = serverSocket.accept();
ServerArr arr = new ServerArr(socket);
arr.start();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(serverSocket!=null) serverSocket.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
cmd μ°½μμ
javac ServerArr.java, javac ServerEx.java, java ServerEx(μλ²μΈν )
μ¬λ¬κ°μ cmdμ°½μμ
javac ClientReceiver.java , javac ClientSender.java, javac ClientEx.java, java ClienEx
λ°μν