DATABASE db, dbms (230707)

이원건·2023년 7월 7일
0

DATABASE

목록 보기
1/6
post-thumbnail

1. 일대일 채팅을 짜시오.(쓰레드 + Socket + IOStream)

  • ChatTcpClient.java
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();
		}
		
		
	}
}
  • ChatTcpServer.java
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();
		}
		
		
	}
}
  • Receiver.java
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();
		}

	}

}
  • Sender.java
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]: ㅋㅋ

2. DB란?

데이터베이스, 데이터를 체계적으로 저장해 모아둔 것을 칭한다.


3. DBMS 란?

DBMS는 데이터의 생성, 저장, 검색, 업데이트, 삭제 등을 처리하며, 데이터베이스의 구조와 효율성을 관리하는 관리 프로그램(시스템)


4. DBMS 종류는?

관계형 데이터베이스 관리 시스템 (RDBMS): 관계형 모델을 기반으로 데이터를 저장하고 관리하는 시스템으로, 테이블과 열로 구성된 데이터베이스를 사용. MySQL, Oracle, SQL Server 등

객체 관계형 데이터베이스 관리 시스템 (ORDBMS): 관계형 데이터베이스에 객체 지향 개념을 추가한 시스템으로, 객체와 관계를 함께 다룸. PostgreSQL 대표적

계층형 데이터베이스 관리 시스템 (HDBMS): 데이터를 트리 형태로 구성하여 계층적 관계를 표현하는 시스템. IMS (Information Management System)이 대표적.

객체지향 데이터베이스 관리 시스템 (OODBMS): 객체 지향 개념을 기반으로 데이터를 저장하고 관리하는 시스템. 객체를 직접 저장하고 객체 간의 상속과 다형성을 지원. Versant, db4o 등

NoSQL 데이터베이스 관리 시스템: 비관계형 데이터 모델을 사용하는 시스템. 대용량의 분산 데이터를 처리하고 확장성을 갖추는 데에 용이. MongoDB, Cassandra, Redis 등


0개의 댓글