seong
소켓 통신(1) - 메세지를 하나만 받기 본문
통신의 기본은 소켓 통신이다
Server Socket
- 서버 소켓은 클라이언트로 부터 메세지, 연결 요청이 오기만을 기다린 후 연결 요청이 오면 클라이언트와 연결을 하고, 다른 소켓을 생성한다.
- 서버 < -- > 서버 소켓
- 클라이언트의 연결 요청이 들어온다.
- 서버와 서버 소켓은 연결을 끊고 클라이언트와 연결을 한다.
- 서버 < -- > 클라이언트
Client Socket
- 서버 프로그램에 연결을 요청하고, 데이터를 전송한다.
3. 실행(서버, 클라이언트 모두실행 해주어야 한다.)
- 소켓 작성 할때 버퍼의 타겟은 소켓의 데이터가 입출력 되어야 한다.
서버의 연결을 바꾸고 싶다면 localhost의 주소를 바꾸면된다 .
<소스코드>
1. 서버 소켓.java
package sock.ex01;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
// 소켓은 os가 들고 있는 네이티브 함수를 빌려서 쓰게 된다.
public class MyServerSoket {
// 1.
ServerSocket serverSocket;// 서버 시작할때 new
public void init() {
System.out.println("서버시작--------------------");
//3.try문으로 감싸주기
try {
//2.서버 소켓 생성 : 서버와 연결을 위한 포트이다.
serverSocket = new ServerSocket(10000); // 0~ 65535 중에서 0~1023 well known port
//4. 서버소켓과 Socker는 다른 소켓이다. : 메세지 전달을 위한 역할
Socket socket = serverSocket.accept(); //accept는 리스너 역할, 소켓을 연결 시켜준다.
System.out.println("클라이언트 연결됨");
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
System.out.println("받은 메세지");
System.out.println(br.readLine());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
MyServerSoket ms = new MyServerSoket();
ms.init();
}
}
2. 클라이언트 소켓.java
package sock.ex01;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class MyClientSocket {
Socket socket = new Socket();
public void init() {
try {
socket = new Socket("localhost", 10000);
// 버퍼 Reader, Writer 내부에 타겟이 무엇을 넣을것인지가 중요
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
bw.write("hello\n");
bw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
MyClientSocket mc = new MyClientSocket();
mc.init();
}
}
'자바 > 자바 실습' 카테고리의 다른 글
스레드 (비동기,동기) (0) | 2022.08.23 |
---|---|
소켓 통신 (2) - 메세지 여러개 받기 While (0) | 2022.08.23 |
URL 통신하기(naver.com 홈페이지) (0) | 2022.08.22 |
스트림(Stream) 통신 - BufferedReader,Writer (0) | 2022.08.22 |
예외처리 Try - Catch (0) | 2022.08.19 |