import java.net.Socket; public class ChatTcpClient { public static void main(String[] args) { final int PORT = 7777; String serverIP = "127.0.0.1"; try { Socket socket = new Socket(serverIP, PORT); System.out.println("서버에 연결 되었습니다."); Sender sender = new Sender(socket); Receiver receiver = new Receiver(socket); sender.start(); receiver.start(); } catch(Exception e) { e.printStackTrace(); } } }
import java.net.ServerSocket; import java.net.Socket; public class ChatTcpServer { public static void main(String[] args) { final int PORT = 7777; try { ServerSocket serverSocket = new ServerSocket(PORT); System.out.println("서버가 작동 중입니다."); Socket socket = serverSocket.accept(); Sender sender = new Sender(socket); Receiver receiver = new Receiver(socket); sender.start(); receiver.start(); }catch(Exception e) { e.printStackTrace(); } } }
import java.io.DataInputStream; import java.net.Socket; public class Receiver extends Thread { Socket socket = null; DataInputStream in = null; public Receiver(Socket socket) { this.socket = socket; try { in = new DataInputStream(socket.getInputStream()); } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { try { while (in != null) { System.out.println(in.readUTF()); } } catch (Exception e) { e.printStackTrace(); } } }
import java.io.DataOutputStream; import java.net.Socket; import java.util.Scanner; public class Sender extends Thread { Socket socket = null; DataOutputStream out = null; String name = null; public Sender(Socket socket) { this.socket = socket; try { out = new DataOutputStream(socket.getOutputStream()); name = "[" + socket.getInetAddress() + ":" + socket.getPort() + "]"; } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { Scanner scanner = new Scanner(System.in); while (out != null) { try { out.writeUTF(name + ": " + scanner.nextLine()); } catch (Exception e) { e.printStackTrace(); } } } }
실행 시에는 먼저 ChatTcpServer를 구동 후 ChatTcpClient를 구동한다.
서버와 클라이언트 1:1만 가능하다. 다른 사람과 채팅하고 싶다면 ChatTcpClient에서 serverIP를 ChatTcpServer를 구동하는 쪽의 IP로 바꿔준다.
ChatTcpServer.java 쪽의 콘솔
서버가 작동 중입니다. [/127.0.0.1:7777]: ㅁㄴㅇ ㅁㄴㅇㄻㄴㅇㄹ [/127.0.0.1:7777]: ㅁㄴㅇㄻㄴㅇㄻㄴㅇ ㅁㄴㅇㄻㄴㅇㄻㅇㄴㄹ [/127.0.0.1:7777]: ?? ㅋㅋ
ChatTcpClient.java 쪽의 콘솔
서버에 연결 되었습니다. ㅁㄴㅇ [/127.0.0.1:51534]: ㅁㄴㅇㄻㄴㅇㄹ ㅁㄴㅇㄻㄴㅇㄻㄴㅇ [/127.0.0.1:51534]: ㅁㄴㅇㄻㄴㅇㄻㅇㄴㄹ ?? [/127.0.0.1:51534]: ㅋㅋ
데이터베이스, 데이터를 체계적으로 저장해 모아둔 것을 칭한다.
DBMS는 데이터의 생성, 저장, 검색, 업데이트, 삭제 등을 처리하며, 데이터베이스의 구조와 효율성을 관리하는 관리 프로그램(시스템)
관계형 데이터베이스 관리 시스템 (RDBMS): 관계형 모델을 기반으로 데이터를 저장하고 관리하는 시스템으로, 테이블과 열로 구성된 데이터베이스를 사용. MySQL, Oracle, SQL Server 등
객체 관계형 데이터베이스 관리 시스템 (ORDBMS): 관계형 데이터베이스에 객체 지향 개념을 추가한 시스템으로, 객체와 관계를 함께 다룸. PostgreSQL 대표적
계층형 데이터베이스 관리 시스템 (HDBMS): 데이터를 트리 형태로 구성하여 계층적 관계를 표현하는 시스템. IMS (Information Management System)이 대표적.
객체지향 데이터베이스 관리 시스템 (OODBMS): 객체 지향 개념을 기반으로 데이터를 저장하고 관리하는 시스템. 객체를 직접 저장하고 객체 간의 상속과 다형성을 지원. Versant, db4o 등
NoSQL 데이터베이스 관리 시스템: 비관계형 데이터 모델을 사용하는 시스템. 대용량의 분산 데이터를 처리하고 확장성을 갖추는 데에 용이. MongoDB, Cassandra, Redis 등