05-16 05:32
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[Network/Java] ์ž๋ฐ” ์†Œ์ผ“ ํ†ต์‹  ๋ณธ๋ฌธ

Infra/Network

[Network/Java] ์ž๋ฐ” ์†Œ์ผ“ ํ†ต์‹ 

miinsun 2021. 12. 3. 18:42

๐Ÿ’ฌ ์š”๊ตฌ ์‚ฌํ•ญ

Java socket ํ†ต์‹ ์„ ๊ตฌํ˜„
java_server.java ์™€ java_client.java๋กœ ๊ตฌ์„ฑ

 

๐Ÿ“Œ Server ์ฝ”๋“œ

์„œ๋ฒ„ ์†Œ์ผ“ ์ƒ์„ฑ

 

ServerSocket serverSocket = new ServerSocket(9000);

 

 

์„œ๋ฒ„๋Š” client ์ ‘์†์„ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ client๊ฐ€ ์ ‘์†ํ•˜๋ฉด accept ํ•ด์ค€๋‹ค
Socket socket = serverSocket.accept();

 

์ ‘์†๋œ ํด๋ผ์ด์–ธํŠธ์˜ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅ
System.out.println("Connected by ( " + socket.getLocalAddress()+ ", "+ socket.getLocalPort()+ ") ");

 

Client๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ
  • ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž…์ถœ๋ ฅ์˜ ํšจ์œจ์ด ๋†’์•„์ง„๋‹ค
  • ์ƒ๋Œ€๋ฐฉ์ด ๋ณด๋‚ธ ๋ฒ„ํผ๋ฅผ ์ฝ์œผ๋ ค๋ฉด Socket์˜ ๊ธฐ๋Šฅ ์ค‘ Stream์„ ๋ถˆ๋Ÿฌ์™€ InputStreanReader ๊ฐ์ฒด์— ๋‹ด๋Š”๋‹ค
BufferedReader bufReader = new BufferedReader( new InputStreamReader( socket.getInputStream()));
String message = bufReader.readLine();
System.out.println("Message : " + message );

 

Client์— ๋ฐ์ดํ„ฐ ์ „์†ก
BufferedWriter bufWriter = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream()));

 

๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก
bufWriter.write(message);

 

๋ฒ„ํผ ๊ฐœํ–‰
bufWriter.newLine();

 

๋ฒ„ํผ์— ๋‚จ์€ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
bufWriter.flush();

 

ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ์†Œ์ผ“์„ ๋ชจ๋‘ ๋‹ซ๋Š”๋‹ค
socket.close();
serverSocket.close();
bufReader.close();
bufWriter.close();

 

Server ์ „์ฒด ์ฝ”๋“œ

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


public class Java_server {
    public static void main(String[] args ) {
        try {
        	
            ServerSocket serverSocket = new ServerSocket(9000);
            Socket socket = serverSocket.accept();
            
            System.out.println("Connected by ( " + socket.getLocalAddress()+ ", "+ socket.getLocalPort()+ ") ");
            
            BufferedReader bufReader = new BufferedReader( new InputStreamReader( socket.getInputStream()));
            String message = bufReader.readLine();
            System.out.println("Message : " + message );
          
            BufferedWriter bufWriter = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream()));
           
            bufWriter.write(message);
            bufWriter.newLine();
            bufWriter.flush();
            
            socket.close();
            serverSocket.close();
            bufReader.close();
            bufWriter.close();
          }

          catch( Exception e ) {
            e.printStackTrace();
          }
     }

 


 

๐Ÿ“Œ Client ์ฝ”๋“œ

์„œ๋ฒ„ ์ ‘์†, localhost 9000๋ฒˆ ํฌํŠธ์— ์ ‘์†
Socket socket = new Socket("127.0.0.1", 9000);โ€‹

 

์„œ๋ฒ„์— ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋ฅผ ์“ด๋‹ค
  • ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž…์ถœ๋ ฅ์˜ ํšจ์œจ์ด ๋†’์•„์ง„๋‹ค
  • Socket์— ๊ธฐ๋Šฅ ์ค‘ Stream์„ ๋ถˆ๋Ÿฌ์™€ OutPutStreamWriter ๊ฐ์ฒด์— ๋‹ด๋Š”๋‹ค
BufferedWriter bufWriter = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream()));

 

๋ฒ„ํผ ์ถœ๋ ฅ
bufWriter.write("hello world");

 

๋ฒ„ํผ ๊ฐœํ–‰
bufWriter.newLine();

 

๋‚จ์•„ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์ถœ๋ ฅ
bufWriter.flush();

 

์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
BufferedReader bufReader = new BufferedReader( new InputStreamReader( socket.getInputStream()));
String message = bufReader.readLine();
System.out.println("Message : " + message );

 

Client ์ „์ฒด ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class Java_client {
    public static void main(String[] args ) {
        try {
            
            Socket socket = new Socket("127.0.0.1", 9000);
            BufferedWriter bufWriter = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream()));
            bufWriter.write("hello world");
            bufWriter.newLine();
            bufWriter.flush();

            BufferedReader bufReader = new BufferedReader( new InputStreamReader( socket.getInputStream()));
            String message = bufReader.readLine();
            System.out.println("Message : " + message );

            socket.close();
            bufReader.close();
            bufWriter.close();
            }
        
          catch( Exception e ){
            e.printStackTrace();
          }
    }
}

 

๊ฒฐ๊ณผ

 

Comments