티스토리 뷰

Socket이란?

socket은 영어사전에서는 콘센트, 플러그를 꽂는 곳 이라고 정의됩니다. 당연히 인터넷에서 말하는 소켓과는 용도가 다르지만 완전히 별개의 이야기는 아닙니다. 국가별로 콘센트마다 규격이 다르듯이 인터넷도 소켓을 사용하려면 정해진 규격을 사용해야 합니다. 여기서 설명하려고 하는 소켓은 엄밀히 말하면 TCP/IP소켓입니다. 소켓은 네트워크 상에서 수행되는 두 프로그램 간의 양방향 통신 링크의 한쪽 끝 단을 의미합니다. 콘센트와 전자제품과 비슷하다고 할 수 있습니다. 콘센트에 플러그를 연결함으로써 전기를 공급 받을 수 있으니까요.

 

클라이언트와 서버 소켓

 

서버 소켓은 클라이언트 소켓이 접속하기를 기다리고 있는 서버에서 구현된 소켓입니다. 전자제품과 콘센트가 있다면 콘센트의 위치라고 할 수 있습니다.

 

클라이언트 관점에서는 서버의 IP와 포트를 알아야 접속 할 수 있습니다.

서버의 관점에서는 서버소켓을 만들어 클라이언트를 기다립니다. ServerSocket으로 생성된 소켓에 accept 메소드를 사용하면 클라이언트 소켓이 접속 할 수 있는 상태가 됩니다.

 

클라이언트 소켓이 접속하면 서버소켓은 새로 생성한 소켓으로 클라이언트 소켓과 통신을 합니다.

 

 

HTTP 통신과 차이점

HTTP

  • 비연결성으로 클라이언트가 서버에게 통신을 요청하면 서버는 응답을 하고 연결은 끊어집니다.
  • 새로운 데이터를 요청 할 때 마다 연결을 맺고 끊고를 반복해야 함으로 자주 데이터를 주고받으면 오버헤드가 발생합니다.

Socket

  • 소켓은 서버와 클라이언트가 실시간으로 데이터를 주고받는 양방향 통신(Full Duplex) 입니다.
  • 실시간으로 데이터갱신이 필요한 일(채팅, 영상 스트리밍, 주식)등에 이용됩니다.

 

 

소스

Server

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(80);
        Socket socket = serverSocket.accept();

        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String msg = br.readLine();
        System.out.println(msg);

        br.close();
        is.close();
        socket.close();
        serverSocket.close();
    }
}

 

Client

import java.io.*;
import java.net.Socket;

public class Main {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 80);
        OutputStream os = socket.getOutputStream();
        PrintWriter writer = new PrintWriter(os);
        writer.println("안녕하세요!");
        writer.close();
        os.close();
        socket.close();
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함