소켓통신이란?
출처: https://helloworld-88.tistory.com/215
참고: https://www.youtube.com/watch?v=3jQ2dBpiqPo
(내생각: 소켓이란 다른 계층, 다른 영역으로 데이터를 보내기 위한 인터페이스. 네트워크에서 소켓이란 AL계층의 데이터를 TL계층으로 보내기 위한 인터페이스.
아래 영상에서 파일이라고 하는 것은 메시지를 전송받는 대상임. 즉 방금말한 다른영역이 파일임. 다른영역이 TCP가 되면 그 파일을 TCP Socket이라고 부르는 것임. 즉 소켓은 다른영역인 TCP로 데이터를 어떻게 보내는지 설명해 놓은 인터페이스가 설명되어 있는 인터페이스파일임(이 인터페이스를 구현한것을 소켓 라이브러리라고 하는 것같음). 소켓프로그래밍이란? TCP라는 대상에 데이터를 보내기 위해 소켓라이브러리를 활용하여 입출력 프로그래밍을 하는 것. 즉, 그냥 TCP에 대한 입출력 인터페이스를 사용하여 프로그래밍하는 것이 소켓 프로그래밍이다.)
https://www.youtube.com/watch?v=3jQ2dBpiqPo )
소켓통신
소켓(SOCKET)이란?
소켓(Socket)은 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다.
다시말해 소켓이은 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스의 역할을 하는데 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어 진다. 이러한 소켓은 역할에 따라 서버 소켓, 클라이언트 소켓으로 구분된다.
소켓통신의 흐름
소켓종류
HTTP 통신과 SOCKET 통신의 비교
HTTP 통신
- Client의 요청(Request)이 있을 때만 서버가 응답(Response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식
HTTP 통신의 특징
-----------------------------------------------------------------------------------------------https://kadosholy.tistory.com/125--------------
1. 소켓(Socket)과 소켓통신이란?
소켓(Socket)은 TCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점을 말합니다. 소켓통신은 이러한 소켓을 통해 서버-클라이언트간 데이터를 주고받는 양방향 연결 지향성 통신을 말합니다. 소켓통신은 보통 지속적으로 연결을 유지하면서 실시간으로 데이터를 주고받아야 하는 경우에는 사용됩니다.
소켓은 클라이언트 소켓과 서버 소켓으로 구분되며, 소켓간 통신을 위해서는 네트워크상에서 클라이언트와 서버에 해당되는 컴퓨터를 식별하기 위한 IP주소와 해당 컴퓨터내에서 현재 통신에 사용되는 응용프로그램을 식별하기 위한 포트번호가 사용됩니다.
2. 서버와 클라이언트
소켓통신에서는 서버와 클라이언트가 존재하며, 서버(Server)는 데이터를 제공하는 쪽을 말하며, 클라이언트(Client)는 데이터를 요청하여 제공받는 쪽을 말합니다.
3. 서버 소켓 구현하기
1) 서버소켓 생성
ServerSocket serverSocket = new ServerSocket(8000); // 포트번호
2) 클라이언트 접속 대기
Socket socket = serverSocket.accept( );
3) 데이터 송수신을 위한 input/output 스트림 생성
InputStream in = socket.getInputStream( );
OutputStream out = socket.getOutputStream( );
4) input 스트림을 통한 데이터 수신 (클라이언트 → 서버)
byte[ ] inputData = new byte[100];
int length = in.read(inputData);
String inputMessage = new String(inputData, 0, length);
5) output 스트림을 통한 데이터 송신 (서버 → 클라이언트)
String outputMessage = "보낼메시지";
out.write(outputMessage.getBytes( ));
out.flush( );
6) 통신 종료
socket.close( );
serverSocket.close( );
4. 클라이언트 소켓 구현하기
1) 클라이언트 소켓 생성을 통한 서버접속
Socket socket = new Socket("127.0.0.1", 8000); // IP주소, 포트번호
2) 데이터 송수신을 위한 input/output 스트림 생성
InputStream in = socket.getInputStream( );
OutputStream out = socket.getOutputStream( );
3) output 스트림을 통한 데이터 송신 (클라이언트 → 서버)
String outputMessage = "보낼메시지";
out.write(outputMessage.getBytes( ));
out.flush( );
4) input 스트림을 통한 데이터 수신 (서버 → 클라이언트)
byte[ ] inputData = new byte[100];
int length = in.read(inputData);
String inputMessage = new String(inputData, 0, length);
5) 통신 종료
socket.close( );
출처: https://kadosholy.tistory.com/125 [KADOSHoly:티스토리]