TCP 통신을 통한 상호 작용

3266 단어
1. 클라이언트:java.net.Socket 클래스는 Socket 대상을 만들고 서버에 연결 요청을 보내면 둘이 연결을 맺고 통신을 시작한다고 한다.2. 서버:java.net.ServerSocket 클래스는 ServerSocket 대상을 만드는 것은 하나의 서비스를 열고 클라이언트의 연결을 기다리는 것과 같다는 것을 나타낸다.

클라이언트 구현


소켓: IP 주소와 포트 번호가 포함된 네트워크 단위입니다.(사실은 컴퓨터) 구조 방법: Socket(String host, int port)은 플러그인을 만들고 지정한 호스트의 지정한 포트 번호에 연결한다.매개변수:
  • String host: 서버 호스트 이름/서버의 IP 주소
  • int port: 서버의 포트 번호
  • 구성원 메서드:
  • OutputStream get OutputStream () 이 플러그인의 출력 흐름
  • 을 되돌려줍니다.
  • InputStream getInputStream () 이 소켓의 입력 흐름
  • 을 되돌려줍니다.
  • void close() 소켓 닫기
  • 구현 단계:
  • 서버의 IP 주소와 포트 번호를 연결하는 클라이언트 대상 Socket을 만듭니다.
  • Socket 대상의 방법인 get OutputStream()을 사용하여 네트워크 바이트 출력 흐름 대상인 OutputStream 대상을 가져옵니다.
  • 네트워크 바이트 출력 흐름 OutputStream 대상의 방법인 write를 사용하여 서버에 데이터를 보냅니다.
  • Socket 대상의 방법 getInputStream () 을 사용하여 네트워크 바이트 출력 흐름 대상인 InputStream 대상을 가져옵니다.
  • 네트워크 바이트로 흐르는 InputStream 대상의 방법read를 입력하여 서버가 쓴 데이터를 읽습니다.
  • 자원 방출(Socket)
  • 참고:
  • 클라이언트와 서버가 상호작용을 하려면 Socket에서 제공한 네트워크 흐름을 사용해야 하며 자신이 만든 흐름 대상을 사용할 수 없습니다.
  • 우리가 클라이언트 대상 Socket을 만들 때 서버와 서버가 3차례의 악수를 거쳐 연결 통로를 구축하도록 요청한다. 이때 서버가 시작되지 않으면 이상을 던지고 성공적으로 시작하면 상호작용을 할 수 있다.

  • 서버 구현:


    구성 방법: ServerSocket(int port) 특정 포트에 연결된 서버 소켓 구성원을 만드는 방법: 서버는 어떤 클라이언트가 Socket accept () 를 보내서 이 소켓에 대한 경청을 받고 이 소켓의 연결을 받아들이는지 알아야 한다.
  • 서버 ServerSocket 객체 및 시스템에서 지정할 포트 번호를 만듭니다.
  • ServerSocket 대상의 방법인 accept()를 사용하여 요청한 클라이언트 대상Socket을 가져옵니다.
  • Socket 대상의 방법 getInputStream () 을 사용하여 네트워크 바이트 입력 흐름 InputStream을 가져옵니다.
  • 네트워크 바이트 입력 흐름 InputStream 대상의read 방법을 사용하여 클라이언트가 보낸 데이터를 읽습니다.
  • Socket 대상의 방법인 get OutputStream()을 사용하여 네트워크 바이트 출력 흐름 OutputStream을 가져옵니다.
  • 네트워크 바이트 출력 흐름 OutputStream 대상의 write 방법을 사용하여 클라이언트에게 데이터를 되돌려 씁니다.
  • 리소스(Socket, ServerSocekt)를 방출합니다.
  • // 
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class Client {
        public static void main(String[] args) throws IOException {
            Socket socket = new Socket("127.0.0.1",8888);
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(" ".getBytes());
            InputStream inputStream = socket.getInputStream();
            byte[] bytes = new byte[1024];
            int i = inputStream.read(bytes);
            System.out.println(new String(bytes,0,i));
            socket.close();// 
        }
    }
    
    
    // 
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
        public static void main(String[] args) throws IOException{
            ServerSocket server = new ServerSocket(8888);
            Socket socket = server.accept();// 
            InputStream inputStream = socket.getInputStream();
            byte[] bytes = new byte[1024];
            int i = inputStream.read(bytes);
            System.out.println(new String(bytes,0,i));
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(" ~~~~~~".getBytes());
            socket.close();
            server.close();
        }
    
    }
    
    

    먼저 서비스 측을 시작하고 클라이언트를 시작하면 첫 번째 상호작용을 실현할 수 있다.

    좋은 웹페이지 즐겨찾기