네트워크(Network)

김덕근·2023년 1월 3일
0

concept

목록 보기
21/21

서버

  • 서비스를 제공하는 프로그램 또는 컴퓨터
    서버는 서비스를 제공하는 프로그램으로 클라이언트의 연결을 수락하고
    요청 내용을 처리 후 응답을 보내는 역할

클라이언트

  • 서비스를 요청하여 사용하는 프로그램 또는 컴퓨터
    클라이언트는 서비스를 받는 프로그램으로 네트워크 데이터를 필요로 하는
    모든 어플리케이션이 해당 됨

IP주소(Internet Protocol) (loopback)

네트워크 상에서 컴퓨터를 식별하는 번호로 네트워크 어댑터(랜카드)마다 할당 되어 있음

포트(Port) - (1개의 프로그램에 1개의 포트)

같은 컴퓨터 내에서 프로그램을 식별하는 번호로
클라이언트는 서버 연결 요청 시 IP주소와 포트 번호를 알아야 함

요청(Requst) - req로 사용
응답(Response) - res로 사용

여러대의 컴퓨터를 통신 회선으로 연결한 것


소켓 프로그래밍

소켓(Socket)

  • 프로세스 간의 통신에 사용되는 양쪽 끝 단

프로토콜(Protocol)

  • 컴퓨터 간의 정보를 주고 받을 때의 통신방법에 대한 규약으로
    접속이나, 전달방식, 데이터의 형식, 검증 방법 등을 맞추기 위한 약속

TCP(Transmission Control Protocol) (은행, 기차예매...)

  • 데이터의 전달의 신뢰성을 최대한 보장하기 위한 방식으로 연결지향형 통신이다.
    순차적으로 데이터를 전송하고 확인 및 오류 시 재전송을 한다.

UDP(User Datagram Protocol) (스트리밍서비스,...)

  • 데이터의 빠른 전달을 보장하기위한 방식으로 비연결 지향형 통신이다.
    확인 및 재전송 작업이 없다.

	public void serverStart() {
		
		int port = 8500;
		
		ServerSocket serverSocket = null;
		Socket client = null;
		
		InputStream is = null;
		BufferedReader br = null;
		
		OutputStream os = null;
		PrintWriter pw = null;
		
		try {
			serverSocket = new ServerSocket(); // 소켓 객체 생성
			
			client = serverSocket.accept(); // 연결
			
			String clientIP = client.getInetAddress().getHostAddress(); // Client IP주소
			
			is = client.getInputStream(); // 클라이언트에서 입력받기
			os = client.getOutputStream(); // 클라이언트에게 출력하기
            // Socket에 있는 메서드 사용
			
    //InputStreamReader : 바이트기반 스트림과 문자기반 스트림 연결에 사용하는 스트림
			br = new BufferedReader(new InputStreamReader(is));
			pw = new PrintWriter(os);
			
			pw.println("무슨일이야");
			pw.flush(); // 스트림 내용 밀어내기
			
			String str = br.readLine(); // 클라이언트 내용 불러오기
			System.out.println(str);
			
		} catch(IOException e) {
			e.printStackTrace();
			
			
		} finally {
			try {
				if(serverSocket != null) serverSocket.close();
				if(client != null) client.close();
				
				if(br != null) br.close();
				if(pw != null) pw.close();
			} catch(IOException e) {
				e.printStackTrace();
			}
		}
	}
//3. 보조 스트림을 통해 성능 개선
br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
pw = new PrintWriter(clientSocket.getOutputStream());
profile
안녕하세요!

0개의 댓글