[Day 13]公費0413-内容整理


🌞java.net

  • シリーズパッケージ
  • 🌈InetAddress

  • クラス
  • 、インターネット上のアドレスを表す
  • InetAddressは、ジェネレータが指定されていない限り、静的な方法でオブジェクトを作成できます.
  • 🌈URL

  • クラス
  • 、インターネット上のドキュメントの位置を表す

    🌞つうしんプログラム

  • ネットワーク上の2台のコンピュータが互いに通信するプログラム
  • 🌈通信に関する基本用語

  • ipアドレス:
  • 識別子インターネット上の多くのコンピュータで特定のコンピュータを区別するために使用される
  • ポート番号:1台のコンピュータで複数のネットワークプログラムを同時に実行できます.特定のプログラムを区別する識別子
  • サーバ:サービスを提供するコンピュータまたはプログラム
  • クライアント:サービスコンピュータまたはプログラム
  • エコー:受信データをそのまま送信側
  • に送信する.
  • ブロードキャスト:受信したデータをすべての接続されたコンピュータにエクスポート

    🌈つうしんモード


    🍁TCP方式


    まず、通信するコンピュータと接続を確立し、相手のコンピュータがデータを受信する準備ができているかどうかを確認し、
  • でデータを送信します.
  • 現実の「電話」に似た概念
  • 🍁UDP方式

  • は、通信するコンピュータに接続することなく、
  • を介してデータを送信する
  • 現実の「信」に似た概念
  • 🌈通信方式によるJava提供クラス


    🍁TCP方式

  • ServerSocket
  • Socket
  • 🍁UDP方式

  • DatagramSocket
  • DatagramPacket
  • 🌈TCPネットワークプログラミングプロセス

    					서버 				     	   클라이언트
                   
    1.         ServerSocket 생성
    2. 	클라이언트가 접속할 때 까지 무한 대기상태
    3. 										  Socket객체를 생성하여 통신을 요청
    4. 		       통신을 수락
    5. 		데이터를 주고받을 스트림을 생성		  데이터를 주고받을 스트림을 생성
    6.			데이터를 주고받는다. 				  데이터를 주고받는다.
    7. 		사용했던 자원을 닫아준다.			   	사용했던 자원을 닫아준다.

    🌈UDP


    🍁UDPSender


    192.168.0.2/9001こんにちは?//差出人から送られてきた言葉.

    🍁UDPReceiver


    こんにちは.受信出力

    🌞例


    🌟(InetAddress)例1🌟

    import java.net.InetAddress;
    
    public class InetAddressTest {
    
    	public static void main(String[] args) {
    		try {
    			
    			InetAddress addr = InetAddress.getByName("www.naver.com"); //네이버 닷컴의 ipadress 정보를 확인할 수 있다.
    			System.out.println(addr);
    			
    		} catch (Exception e) {
    			
    			System.out.println("예외발생: " + e.getMessage());
    		}
    	}
    
    }

    🌟(TCPClient)例2🌟

    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class TCPClient {
    
    	public static void main(String[] args) {
    		try {
    			// 3. 서버에게 통신을 요청한다.
    			Socket socket = new Socket("192.168.0.2", 9000); // ip주소와 포트번호 9000번 (server에서 설정해줌) //cmd에서 확인한 아이피주소를
    																// 적어준다.
    
    			// 5. 데이터를 주고받을 스트림을 생성
    			InputStream is = socket.getInputStream();
    			OutputStream os = socket.getOutputStream();
    			
    			// 6. 데이터를 주고받는다.
    			for(int i=1; i<=10; i++) {
    				int n = is.read(); //수신된 데이터를 읽어옴.
    				System.out.println("서버로 부터 수신된 데이터: " +n);
    				
    				Thread.sleep(200);
    				
    			}
    			
    			// 7. 사용했던 자원을 닫아준다.
    			is.close();
    			os.close();
    			socket.close();	
    
    		} catch (Exception e) {
    			System.out.println("예외발생: " + e.getMessage());
    		}
    
    	}
    
    }

    🌟(TCPServer)例3🌟

    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Random;
    
    public class TCPServer {
    
    	public static void main(String[] args) {
    		
    		Random r = new Random(); //랜덤 생성
    		
    
    		try {
    			// 1. ServerSocket을 생성한다.
    			ServerSocket server = new ServerSocket(9000);
    
    			// 2. 클라이언트의 접속이 있을 때 까지 무한 대기상태
    			while (true) {
    				// 4. 클라이언트의 접속을 수락한다. (반환하는 메소드 Socket)
    				Socket socket = server.accept(); // 소켓 객체를 반환한다.
    				System.out.println("** 클라이언트가 연결하였습니다. **");
    
    				// 5. 데이터를 주고받을 스트림을 생성
    				InputStream is = socket.getInputStream();
    				OutputStream os = socket.getOutputStream();
    				
    				// 6. 데이터를 주고받는다.
    				// 연결한 클라이언트한테 정수 난수 10개를 만들어 보내주도록 하자.
    				for(int i=1; i<=10; i++) {
    					
    					
    					//0에서 100사이의 난수를 만들자.
    					int n = r.nextInt(100);
    					
    					System.out.println("서버에서 난수를 만들었습니다. " + n);
    					
    					
    					//만들어진 난수를 클라이언트한테 보낸다.
    					os.write(n); //정수를 내보냄
    					
    					Thread.sleep(200); //0.2초 정도의 대기시간
    					
    				}
    				
    				System.out.println("클라이언트에게 데이터를 모두 내보냈습니다.");
    				
    				// 7. 사용했던 자원을 닫아준다.
    				is.close();
    				os.close();
    				socket.close();
    			}
    
    		} catch (Exception e) {
    			System.out.println("예외발생: " + e.getMessage());
    		}
    
    	}
    
    }