-
728x90
소켓: TCP/IP 네트워크(OSI 7계층 중 1~4 계층)를 자동으로 이용하기 쉽게 처리해주는 기술
TCP(서버, 클라이언트), UDP(서버, 클라이언트)
ServerSocket serverSocket = new ServerSocket(9999); //9999번 포트 사용포트를 열어 9999번 포트 LISTENING 상태로 바뀜
Socket clientSocket=new Socket("IP주소",9999);서버와 연결되도록 주소와 포트번호 지정서버
import java.io.DataInputStream;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class Server01 {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(9999); //9999번 포트 사용Socket clientSocket = serverSocket.accept();InputStream is =clientSocket.getInputStream(); //상대방으로부터 읽을 수 있는 스트림DataInputStream dis = new DataInputStream(is);int data=dis.readInt();System.out.println(data);
clientSocket.close();//clientSocket.getOutputStream(); //상대방으로부터 보낼 수 있는 스트림}}클라이언트
import java.io.DataOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;
public class Client01 {public static void main(String[] args) throws IOException{Socket clientSocket=new Socket("ip주소",9999);OutputStream os = clientSocket.getOutputStream();DataOutputStream dos=new DataOutputStream(os);
dos.writeInt(100);clientSocket.close();}}서버에서 대기 -> 클라이언트에서 생성 3hand shaking
-> 데이터 전송 -> 종료
System.out.println("client IP addr: "+clientSocket.getInetAddress());System.out.println("server IP addr: "+clientSocket.getLocalAddress());System.out.println("client Port: "+clientSocket.getPort());System.out.println("server Port: "+clientSocket.getLocalPort());IP주소, Port 번호 출력블랙리스트일 경우 출력x
import java.io.BufferedReader;import java.io.DataInputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class Server02 {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new FileReader("블랙리스트파일 주소"));ServerSocket serverSocket = new ServerSocket(9999); //9999번 포트 사용Socket clientSocket = serverSocket.accept();while(true){String line=br.readLine();if(line==null){break;}if(line.equals(clientSocket.getInetAddress().toString())){System.out.println("403 forbidden");clientSocket.close();return;}}InputStream is =clientSocket.getInputStream(); //상대방으로부터 읽을 수 있는 스트림DataInputStream dis = new DataInputStream(is);int data=dis.readInt();System.out.println(data);clientSocket.close();
//clientSocket.getOutputStream(); //상대방으로부터 보낼 수 있는 스트림}}메모장에서 블랙리스트를 불러들어와 블랙리스트일 경우 연결 종료
Http 통신 요청해서 응답받기
import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;
public class Client02 {public static void main(String[] args) throws IOException{Socket clientSocket=new Socket("www.ddarahakit.kro.kr",80);OutputStream os = clientSocket.getOutputStream();DataOutputStream dos=new DataOutputStream(os);dos.writeBytes("GET / HTTP/1.1\r\nHost: www.ddarahakit.kro.kr\r\n\r\n");InputStream is=clientSocket.getInputStream();InputStreamReader isr=new InputStreamReader(is);BufferedReader br=new BufferedReader(isr);PrintWriter pw = new PrintWriter("저장할 파일 주소");while(true){String data=br.readLine();if(data==null){break;}System.out.println(data);pw.println(data);}br.close();pw.close();clientSocket.close();}}728x90반응형'공부' 카테고리의 다른 글
디자인 패턴 - 싱글톤 (0) 2022.07.27 자바 쓰레드 (0) 2022.07.27 자바 스트림 (0) 2022.07.26 자바 예외 처리 (0) 2022.07.26 7계층 HTTP 프로토콜 (0) 2022.07.26