소켓 생성해서 보내고 받기

2023. 1. 27. 20:38프로그래밍 언어/JAVA

소켓이란?

- 소켓에는 두 가지가 있다. 

- 서버 소켓과 클라이언트 소켓이 존재한다.

 

(1) 서버 소켓

- 서버 소켓은 종업원과 같은 역할을 한다. 

- 요청을 처리한다.

- 서버 소켓은 고객 측에서 서버 소켓에 요청을 보내면 통신할 수 있는 수단을 만들어주는 역할을 한다.

- 클라이언트 측에서 요청을 하면 종업원이 통신수단을 만들어준다.

- 서버 소켓은 소켓을 만들어주는 역할만 한다.

- 서버 소켓을 가지고 통신을 하는 것이 아니다. 

 

import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerMain {
	public static void main(String[] args) throws IOException {
    	System.out.println("===== 서버 =====");
        
        //서버 소켓 만들어주기
        ServerSocket ss = new ServerSocket(12345);
        
        System.out.println("연결요청이 오기를 기다리는중...");
        
        //서버소켓이 통신수단을 만들어줌
        //이 통신수단을 통해 통신이 가능함
        Socket s = ss.accept();
        
        System.out.println("연결완료 ! : " +s);
        
        //아웃풋 스트림 생성하기
        //클라이언트와 연결할 수 있는 통로를 생성
        OutputStream out = s.getOutputStream();
        //글자를 받을 수 있는 기능 생성
        PrintWriter pw = new PrintWriter(out);
        
        //유저한테 메시지 입력받기
        Scanner scanner = new Scanner(System.in);
        System.out.print("보낼 메시지 : ");
        String message = scanner.nextLine();
        
        //메시지 보내기
        pw.println(message);
        pw.flush();
        
    }
}

 

 

(2) 클라이언트 소켓

import java.io.BufferedReader;
import java.io.Exception;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;


public class ClientMain {
	public static void main(String[] args) throws Exception {
    	System.out.println("===== 클라이언트 =====");
        
        //소켓을 하나 만듦
        //소켓을 만들 때, pc의 ip주소와 포트번호를 입력해야 함
        //내 컴퓨터에 스스로 연결할 때는 localhost 단어를 사용
        Socket s = new Socket("localhost", 12345);
        
        System.out.println("연결완료 !!! : " +s);
        
        //메시지 수신하기
        //받을 통로 생성
        //인풋스트림 생성하기
        InputStream in = s.getInputStream();
        //메시지를 받는 기능 생성
        InputStreamReader isr = new InputStreamReader(in);
        //메시지를 받는 더 좋은 기능 생성
        BufferedReader br = new BufferedReader(isr);
        
        //데이터 읽기
        String message = br.readLine();
        
        System.out.println(message);
    }
}

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

변수와 메소드  (0) 2023.09.04
클래스와 객체  (0) 2023.09.04
쓰레드(Thread)  (0) 2023.01.27
String vs StringBuffer vs StringBuilder  (0) 2023.01.26
Wrapper 클래스  (0) 2023.01.26