소켓 생성해서 보내고 받기
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 |