본 글의 예시에서는 안드로이드에서 소켓 통신을 구현하는 방법을 간략하게 설명하고 있다. 구체적인 내용은 다음과 같다.
1. 소켓 통신 개요
평신도의 관점에서 소켓은 통신의 초석이자 TCP/IP 프로토콜을 지원하는 네트워크 통신의 기본 작동 단위입니다. 네트워크 통신 과정에서 엔드포인트(Endpoint)를 추상적으로 표현한 것으로, 연결에 사용되는 프로토콜, 로컬 호스트의 IP 주소, 로컬 프로세스의 프로토콜 포트, 호스트의 IP 주소 등 네트워크 통신에 필요한 5가지 정보를 담고 있다. 원격 호스트 및 원격 프로세스의 프로토콜.
애플리케이션 계층이 전송 계층을 통해 데이터를 통신할 때 TCP는 동시에 여러 애플리케이션 프로세스에 동시 서비스를 제공하는 문제에 직면하게 됩니다. 여러 TCP 연결 또는 여러 애플리케이션 프로세스가 동일한 TCP 프로토콜 포트를 통해 데이터를 전송해야 할 수도 있습니다. 다양한 애플리케이션 프로세스와 연결을 구별하기 위해 많은 컴퓨터 운영 체제는 애플리케이션이 TCP/IP 프로토콜과 상호 작용할 수 있도록 소켓(Socket) 인터페이스를 제공합니다. 애플리케이션 계층은 전송 계층과 함께 소켓 인터페이스를 사용하여 다양한 애플리케이션 프로세스 또는 네트워크 연결과의 통신을 구별하여 데이터 전송을 위한 동시 서비스를 구현할 수 있습니다.
한마디로 소켓은 TCP/IP 프로토콜을 캡슐화한 것입니다.
2. 소켓(클라이언트)을 사용하는 단계:
1. 소켓(Tcp) 연결 설정
Java에서 소켓 연결을 설정하는 것은 매우 쉽습니다. 이는 클래스 라이브러리에서 제공하는 소켓 클래스를 사용하여 수행할 수 있습니다.
Socketclient=null; //클라이언트를 나타냅니다. client=newSocket("localhost",5000);
2. 데이터 보내기
PrintStreamout=newPrintStream(socket.getOutputStream()); //PrintStream은 데이터 전송에 가장 편리합니다.
3. 반품정보 수신
buf=newBufferedReader(newInputStreamReader(socket.getInputStream()))); // 일회성 수신을 완료하고 Socket의 입력 스트림을 읽고 그 안에 있는 반환 정보를 읽습니다.
4. 소켓 닫기
Socket.close();
3. 보충:
소켓 서버 측(비 다중 스레드 구현) ServerSocketserver=null; //ServerSocket 클래스 정의 Socketclient=null; //클라이언트 PrintStreamout=null을 나타냄 //인쇄 스트림 출력이 가장 편리함 server=newServerSocket(8888); 포트 8888에 있습니다. System.out.println("서버가 실행 중이며 클라이언트가 연결되기를 기다리고 있습니다.") client=server.accept(); //연결을 얻으면 프로그램이 차단 상태로 들어갑니다. Stringstr="helloworld"; //출력할 정보를 나타냅니다. out=newPrintStream(client.getOutputStream());out.println(str); 클라이언트 클라이언트.close();server.close();