-
Server / Client 간 Thread를 이용한 1:1 실시간 채팅JAVA 코드 2019. 2. 21. 11:40
-Server 소스
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;public class Server {
public void start(){ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(5555);
System.out.println("Server is Waiting...");
socket = serverSocket.accept();System.out.println("Server is Start...");
Sender sender = new Sender(socket);
Receiver receiver = new Receiver(socket);
sender.start();
receiver.start();
} catch (IOException e) {}
}
class Sender extends Thread{
Socket socket;
DataOutputStream out;
String name;
Sender(Socket socket){
this.socket = socket;
try {
out = new DataOutputStream(socket.getOutputStream());
name = "[" + socket.getInetAddress() + "]";
} catch (IOException e) {
}
}
public void run(){
Scanner scan = new Scanner(System.in);
while(out != null){
try {
out.writeUTF(name + scan.nextLine());
} catch (IOException e) {}
}
}
}
class Receiver extends Thread{
Socket socket;
DataInputStream in;
Receiver(Socket socket){
this.socket = socket;
try {
in = new DataInputStream(socket.getInputStream());
} catch (IOException e) {}
}
public void run(){
while(in != null){
try {
System.out.println(in.readUTF());
} catch (IOException e) {}
}
}
}
public static void main(String args[]){
new Server().start();
}
}-Client 소스
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class Client {
final private String serverIP = "203.233.196.179";
public static void main(String args[]){
new Client().start();
}
public void start(){
try {
Socket socket = new Socket(serverIP, 5555);
System.out.println("Server is Connected....");
Sender sender = new Sender(socket);
Receiver receiver = new Receiver(socket);
sender.start();
receiver.start();
} catch (UnknownHostException e) {} catch (IOException e) {
}
}
class Sender extends Thread{
Socket socket;
DataOutputStream out;
String name;
Sender(Socket socket){
this.socket = socket;
try {
out = new DataOutputStream(socket.getOutputStream());
name = "[" + socket.getInetAddress() + "]";
} catch (IOException e) {
}
}
public void run(){
Scanner scan = new Scanner(System.in);
while(out != null){
try {
out.writeUTF(name + scan.nextLine());
} catch (IOException e) {}
}
}
}
class Receiver extends Thread{
Socket socket;
DataInputStream in;
Receiver(Socket socket){
this.socket = socket;
try {
in = new DataInputStream(socket.getInputStream());
} catch (IOException e) {}
}
public void run(){
while(in != null){
try {
System.out.println(in.readUTF());
} catch (IOException e) {}
}
}
}
public static void main(String args[]){
new Server().start();
}
}Server와 Client에 각각 Sender와 Receiver가 같이들어 있는 이유는
각각 다른 컴퓨터에서 실행하기 때문이다.
'JAVA 코드' 카테고리의 다른 글
int[]형 배열 Integer[]로 변환하기 (0) 2019.03.03 간단한 계산기 (0) 2019.02.21 댓글