네트워크 통신 - Client

2023. 7. 21. 12:22JAVA

클라이언트는 서버의 IP주소, port번호를 알아야 접속할 수 있음.


클라이언트 작업


1) 서버와 연결하는 Socket생성(ip주소,port번호)


2) 서버에 데이터를 보내기위한 무지개로드 -OutputStream

 

OutputStream을 만들어주는 해임달(Socket)객체에게 무지개로드(Stream)을 열어달라고 요청


os는 바이트단위로 데이터를 보내기에 불편함


바이트스트림을 문자스트림으로 변환하고.. 더 나아가 보조문자스트림으로..변환


OutputStream -> PrintWriter

 

3) 스트림을 통해 메세지를 내보내기- 전송

 

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class ClientTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 클라이언트는 서버의 IP주소, port번호를 알아야 접속할 수 있음.
		
		String serverIP="172.30.1.83";
		
		// 클라이언트 작업
		//1) 서버와 연결하는 Socket생성(ip주소,port번호)
		try {
			Socket socket=new Socket(serverIP,10001);
			System.out.println("서버와 연결이 되었습니다.");
			
			//2) 서버에 데이터를 보내기위한 무지개로드 -OutputStream
			//OutputStream을 만들어주는 해임달(Socket)객체에게 무지개로드(Stream)을 열어달라고요청
			OutputStream os= socket.getOutputStream();
			//os는 바이트단위로 데이터를 보내기에 불편함
			//바이트스트림을 문자스트림으로 변환하고.. 더 나아가 보조문자스트림으로..변환
			PrintWriter writer=new PrintWriter(os);
			System.out.println("스트림 연결작업 성공!!.. 전송 가능 상태");
			
			//보낼 메세지를 키보드로 입력받기
			Scanner scan=new Scanner(System.in);
			
			//먼저 데이터 하나만 보내기
//			System.out.print("보낼 메세지 입력 : ");
//			String msg= scan.nextLine();
			
			//만약 여러번 메세지를 보내려면
			while(true) {
				System.out.print("보낼 메세지 입력 : ");
				String msg= scan.nextLine();
				
				if(msg.equals("exit")) break;
				
				//3) 스트림을 통해 메세지를 내보내기- 전송
				writer.println(msg);
				writer.flush();
			}
				
			writer.close();
			
			System.out.println("메세지 전송이 완료 되었습니다.");			
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

 

'JAVA' 카테고리의 다른 글

GUI 깔끔하게 만들어보기  (0) 2023.07.25
GUI(그래픽 유저 인터페이스)  (0) 2023.07.25
네트워크 통신 - Server  (0) 2023.07.21
FileOutput(파일 출력)  (0) 2023.07.20
FileInput(파일 입력)  (0) 2023.07.20