갈림길 이정표

[java] Net Test (Client & Server) 본문

카테고리 없음

[java] Net Test (Client & Server)

이몽뇽 2020. 8. 10. 09:01
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;


//			NIC [Network Information Center] (대륙별 IP관리)
//			co: 상업 목적, gov: 정부, org: 단체 

//			http://www.naver.com/:80/index.html	= URL (Uniform Resource Locator)

/*			(Server-side program) java, C#								*/
//			URL 종류: html, XML, JSON, CSS, VUE, ...(Client-side program)
//			웹브라우저: html 코딩 해석 ⇒ 시각화 (ex. 크롬. 익스플로러, 파이어폭스 ...)

public class NetTest1 {

	public static void main(String[] args) {
		//Network
		InetAddress ia;
		InetAddress ia2[];
		
		try {
			ia = InetAddress.getByName("www.naver.com");// (domain name) 
			System.out.println(ia);	//125.209.222.142 (C-ype ip address) ⇒ 사람 언어가 아님 (기억하기 힘듦)
			//네이버가 가지고 있는 여러개 ip주소중 하나 접속
			
			System.out.println(ia.getHostAddress());//ip 주소
			System.out.println(ia.getHostName());//도메인 이름
			
			System.out.println();
			ia2 = InetAddress.getAllByName("www.naver.com");
			for(InetAddress a: ia2)	System.out.println(ia.getHostAddress());	//여러개 IP받아오기
			
			System.out.println("-------------");
			InetAddress ia3 = InetAddress.getByName("www.naver.com");
			Socket socket = new Socket(ia, 80);
			PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
			out.println("GET https://www.naver.com");
			out.flush();
			
			//웹서버에서 넘어온 자료 출력
			BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while(true) {
				String str = reader.readLine();
				if(str == null) break;
				System.out.println(str);
			}
			reader.close();
			out.close();
			socket.close();
			
		} catch (Exception e) {
			System.out.println("err: " + e);
		}
		
	}

}
//-------------------------Server-----------------------//

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

//cmd창에서
//cd D:\work\jsou\java_pro6_net
//D:
//NetTest2Server 치고
//다른 cmd 창에서 Client 클래스도 반복


public class NetTest2Server {

	public static void main(String[] args) {
		//Echo server
		ServerSocket ss = null; //TCP/IP protocol을 지원하는 서버용 클래스
		Socket socket = null;	//클라이언트 computer와 통신용 클래스
		
		try {
			ss = new ServerSocket(9999);	//0 ~ 약65000개 사용가능한 포트가 있지만 0~1024는 컴터가 쓰고 3306은 Maria Db사용중
			System.out.println("서버 서비스 중...");
			socket = ss.accept();		//클라이언트 접속이 있는 경우 반응
			System.out.println("접속자 정보: " + socket.toString());
			
			BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String data = reader.readLine();
			System.out.println("수신 자료 : " + data);	//일회성 정보
			reader.close();
			socket.close();
			ss.close();
		} catch (Exception e) {
			System.out.println("server err: " + e);
		}
	}

}


//-------------------Client--------------------------//

import java.io.PrintWriter;
import java.net.Socket;

public class NetTest2Client {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("192.168.0.26", 9999);	//일회성 정보
			
			PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
			out.print("안녕 반가워" + "\n");	//서버로 자료 전송
			
			out.close();
			socket.close();
		} catch (Exception e) {
			System.out.println("client err: " + e);
		}
	}

}
//-------------------Server--------------------------//

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class NetTest3Server {

	ServerSocket ss;
	Socket socket;
	PrintWriter out;
	BufferedReader reader;
	
	public NetTest3Server() {
		try {
			ss = new ServerSocket(7777); //80:인터넷, 3306: MariaDb, 8088:
		} catch (Exception e) {
			System.out.println("NetTest3Server err: " + e);
		}
		System.out.println("서버 서비스 출발...");
		
		try {
			socket = ss.accept();	//클라이언트 요청을 기다림
			out = new PrintWriter(socket.getOutputStream(), true);
			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		} catch (Exception e) {
			System.out.println("에러: " + e);
		}
	}
	
	private void serviceMsg() {
		try {
			String msg = reader.readLine();
			System.out.println("receive msg : " + msg);
			
			out.println("from server : " + msg + "첨언: 수고해");	//클라이언트에 출력하겠다
			
			reader.close();
			out.close();
			ss.close();
		} catch (Exception e) {
			System.out.println("serviceMsg 에러: " + e);
		}
		
	}
	
	public static void main(String[] args) {
		while(true) {
			NetTest3Server server = new NetTest3Server();
			server.serviceMsg();
		}
	}

}

//-------------------Client--------------------------//

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class NetTest3Client {
	Socket socket;
	PrintWriter out;
	BufferedReader reader;
	
	public NetTest3Client() {
		try {
			socket = new Socket("192.168.0.52", 7777);	//7777포트 접속
			out = new PrintWriter(socket.getOutputStream(), true);
			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		} catch (Exception e) {
			System.out.println("NetTest3Client err: " + e);
		}
	}
	
	private void sendMsg() {
		try {
			Scanner scanner = new Scanner(System.in);
			System.out.println("전송 메세지 : ");
			String data = scanner.nextLine();
			out.println(data);	//서버로 메서지 전송!
			
			String re_data = reader.readLine();
			System.out.println("수신자료:" + re_data);
		} catch (Exception e) {
			System.out.println("sendMsg err: " + e);
		} finally {
			try {
				reader.close();
				out.close();
				socket.close();
			} catch (Exception e2) {

			}
		}
	}
	
	public static void main(String[] args) {
		NetTest3Client client = new NetTest3Client();
		client.sendMsg();
	}

}
Comments