촬리의늘솔길

java 에서의 소켓 프로그래밍[서버] 본문

✍~2022/java

java 에서의 소켓 프로그래밍[서버]

리촬리 2022. 6. 1. 12:27

다른 기계에 연결하려면 소켓 연결이 필요합니다.

소켓 접속이란, 2대의 머신이 서로의 네트워크 로케이션(IP 주소)과 TCP 포토에 관한 정보를 가지는 것을 의미합니다.

소켓을 열려면,

Socket socket = new Socket(“127.0.0.1”, 5000)

의사소통

소켓 연결을 통해 통신하기 위해 스트림은 데이터를 입력 및 출력하는데 사용됩니다.

 

접속을 종료

소켓 연결은 서버에 메시지가 전송되면 명시적으로 닫힙니다.

프로그램에서 클라이언트는 사용자의 입력을 계속 읽고 "Over"가 입력될 때까지 서버로 보냅니다.

 

소켓 접속 확립

서버 애플리케이션을 쓰려면 2개의 소켓이 필요합니다.

  • 클라이언트 요구를 기다리는 Server Socket (클라이언트가 새로운 소켓()을 작성할 때)
  • 클라이언트와의 통신에 사용하는 plain 오래된 소켓

의사소통
getOutputStream() 메서드는 소켓을 통해 출력을 전송하기 위해 사용됩니다.

 

접속을 종료합니다.
종료 후에는 소켓과 입출력 스트림을 닫아 연결을 닫는 것이 중요합니다.

더보기
// A Java program for a Server
import java.net.*;
import java.io.*;
 
public class Server
{
    //initialize socket and input stream
    private Socket          socket   = null;
    private ServerSocket    server   = null;
    private DataInputStream in       =  null;
 
    // constructor with port
    public Server(int port)
    {
        // starts server and waits for a connection
        try
        {
            server = new ServerSocket(port);
            System.out.println("Server started");
 
            System.out.println("Waiting for a client ...");
 
            socket = server.accept();
            System.out.println("Client accepted");
 
            // takes input from the client socket
            in = new DataInputStream(
                new BufferedInputStream(socket.getInputStream()));
 
            String line = "";
 
            // reads message from client until "Over" is sent
            while (!line.equals("Over"))
            {
                try
                {
                    line = in.readUTF();
                    System.out.println(line);
 
                }
                catch(IOException i)
                {
                    System.out.println(i);
                }
            }
            System.out.println("Closing connection");
 
            // close connection
            socket.close();
            in.close();
        }
        catch(IOException i)
        {
            System.out.println(i);
        }
    }
 
    public static void main(String args[])
    {
        Server server = new Server(5000);
    }
}

중요 사항

  • 서버 애플리케이션은 특정 포트(5000)에 서버 소켓을 만듭니다.이것에 의해, 포트 5000 에 착신하는 클라이언트 요구를 수신하는 서버가 개시됩니다.
  • 그런 다음 서버는 클라이언트와 통신하기 위한 새로운 소켓을 만듭니다
socket = server.accept()
  • accept() 메서드는 클라이언트가 서버에 접속할 때까지 블록합니다(그냥 거기에 있습니다).
  • 다음으로 getInputStream() 메서드를 사용하여 소켓에서 입력을 받습니다.서버는 클라이언트가 "Over"를 보낼 때까지 메시지를 계속 수신합니다.
  • 작업이 끝나면 소켓과 입력 스트림을 닫아 연결을 닫습니다.
  • 컴퓨터에서 클라이언트 및 서버 응용 프로그램을 실행하려면 둘 다 컴파일합니다.그런 다음 먼저 서버 응용 프로그램을 실행하고 클라이언트 응용 프로그램을 실행합니다.
728x90

'✍~2022 > java' 카테고리의 다른 글

객체 지향 개념  (0) 2022.08.03
java 강의  (0) 2022.08.02
spring부트와 aws로 구현하는 웹서비스 따라하기(1)  (0) 2022.07.29
java socket 통신 스레드 이해하기  (0) 2022.06.01
학교 객프 수업 필기(1주차)  (0) 2021.09.03