Language/Java
전이중방식 채팅
원2
2021. 4. 6. 09:30
728x90
반응형
// 현재 소스의 전이중 문제점
package Server;
import java.io.*;
import java.net.*;
import java.util.*;
import Config.Config003;
public class Server003 {
public static void main(String args[]) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(Config003.Port);
System.out.println(Config003.getTime()+"서버가 준비되었습니다.");
} catch(IOException e) { e.printStackTrace(); }
while(true) {
try {
System.out.println(Config003.getTime()+"연결요청을 기다립니다.");
Socket socket = serverSocket.accept();
System.out.println(Config003.getTime()+ socket.getInetAddress()
+ "로부터 연결요청이 들어왔습니다.");
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
Scanner aScanner = new Scanner(System.in);
String sMessage;
while(true) { // 대화
System.out.print("전송할 메시지 : ");
sMessage = aScanner.nextLine();
dos.writeUTF(sMessage);
System.out.println(Config003.getTime()+"데이터를 전송했습니다.");
System.out.println("클라이언로부터 받은 메시지 :"+dis.readUTF());
if(sMessage.equals("EXIT")) {
break;
}
}
dos.close();
dis.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package Client;
import java.io.*;
import java.net.*;
import java.util.Scanner;
import Config.Config003;
public class Client003 {
public static void main(String args[]) {
try {
System.out.println("서버에 연결중입니다. 서버IP :" + Config003.ServerIP);
Socket socket = new Socket(Config003.ServerIP, Config003.Port);
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
Scanner aScanner = new Scanner(System.in);
String sMessage;
while(true) {
sMessage = dis.readUTF();
System.out.println("서버로부터 받은 메시지 :" + sMessage);
System.out.print("전송할 메시지 : ");
dos.writeUTF(aScanner.nextLine());
System.out.println(Config003.getTime()+"데이터를 전송했습니다.");
if(sMessage.equals("EXIT")) {
break;
}
}
System.out.println("연결을 종료합니다.");
dis.close();
dos.close();
socket.close();
System.out.println("연결이 종료되었습니다.");
} catch(ConnectException ce) {
ce.printStackTrace();
} catch(IOException ie) {
ie.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}
}
package Config;
import java.util.Date;
import java.text.SimpleDateFormat;
public interface Config003 {
public static final String ServerIP = "10.100.104.76";
public static final int Port = 7777;
public static String getTime() {
SimpleDateFormat f = new SimpleDateFormat("[hh:mm:ss]");
return f.format(new Date());
}
}
728x90
반응형