Socket 이란 ?
소켓(socket) 이란 프로세스간의 통신에 사용되는 양쪽 끝단을 의미한다. 자바에서는 java.net패키지를 통해 소캣 프로그래밍을 지원하는데, 소켓 통신에 사용되는 프로토콜에 따라 다른 종류의 소켓을 구현하여 제공한다.
소켓은 응용프로그램에서 TCP./IP를 이용하는 창구역할을 한다.
두 프로그램이 네트워크를 통해 서로 통신을 수행 할 수 있도록 양쪽에서 생성되는 링크의 단자이다.
두 소켓이 연결되면서 서로 다른 프로그램이 서로에게 데이터를 전달 할 수 있게된다.
자바에서 Socket 통신을 사용하는 이유
먼저 자바에서 소켓 통신은 C 또는 C++ 언어로 구현된 프로젝트와의 통신에 많이 사용된다.
이유는 Java와 C의 데이터 개념이 다르기 때문인데요. C에서는 구조체를 사용하는데 반해서 Java에는 구조체가 없다.
이처럼 Java의 Object 구조를 C에서 이해하지 못하고 C의 구조체를 자바에서 이해하지 못하기 때문에 서로 통신을 위해서는 byte 단위로 정보를 주고받아야 한다.
HTTP 통신 (단방향 통신) | Http 통신은 Client의 요청(Request)이 있을 때만 서버가 응답(Response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식입니다. Client가 요청을 보내는 경우에만 Server가 응답하는 단방향 통신으로 반대로 Server가 Client에게 요청을 보낼 수는 없습니다. |
Socket 통신 (양방향 통신) | Server와 Client가 특정 Port를 통해 실시간으로 양방향 통신을 하는 방식입니다. Http 통신과는 다르게 Server와 Client가 특정 Port를 통해 연결되어 있어서 실시간으로 양뱡향 통신을 할 수 있습니다. Streaming 중계나 실시간 채팅, 게임 등과 같이 즉각적으로 정보를 주고받는 경우에 사용됩니다. |
InputStream & OutputStream
Stream 은 프로그램 동작 중 외부에서 데이터를 읽어오거나 데이터를 출력할떄 사용된다.
일종의 통로역할이다.
데이터를 읽어드릴때 : InputStream / 데이터를 출력할때 : OutputStream
이들은 단일방향으로 연속적으로 흘러간다.
단일방향이라는 특징때문에 하나의 스트림으로 입 출력을 같이 할 수 없어서 input,output두가지가 따로 존재한다.
Socket 통신의 규칙
1. 기다리는 측이 Server이고 서버에서 Port를 열고 Client의 접속을 기다린다.
2.접속하는측이 Client이고 Server의 IP와Port에 접속하여 통신이 연결된다.
3.서버와 클라이언트 간의 통신은 Send, Receive형태로 주고받는다.
4. 통신이 끝나면 close()로 접속을 끊는다.
'JAVA > JAVA_Lang' 카테고리의 다른 글
StringBuffer class (0) | 2022.08.21 |
---|---|
배열 오름차순, 내림차순 정렬 (0) | 2022.08.21 |
메모리구조 (0) | 2022.08.15 |
오버로딩과 오버라이딩 (0) | 2022.08.14 |
재귀 호출 (recursive call) (0) | 2022.08.14 |