티스토리 뷰

JAVA(프로그래밍)

java 네트워크 소켓 연결하기

알 수 없는 사용자 2018. 7. 29. 13:54

java 네트워크 소켓 연결하기

 

이번 시간에는 네트워크 소켓을 이용하여 다른 시스템에 연결하는 방법을 알아보도록 하겠습니다.

자바에서는 이런 네트워크 연결을 위해서 java.net.Socket 클래스를 제공하고 있습니다.

소켓 연결을 하려면 서버에 대해 두가지 사항을 알아야 합니다. 상대방 서버가 어디에 위치해 있는지 그리고 어떤 포트에서 돌아가고 있는지

알아야 서로 통신을 할수 있습니다. IP 주소와 TCP포트를 알고 있어야 합니다.

물론 우선적으로 방화벽이 없다는 가정하에요..

 

Socket chatSocket = new Socket("연결할 아이피정보", tcp포트번호);

사용방법은 위처럼 객체를 생성할때 연결할 아이피정보와 tcp포트번호를 넘겨주면 됩니다.

여기서 tcp포트에 대해 알아보겠습니다.

인터넷 웹포트 표준은 80port입니다. 표준 포트는 생략가능합니다.

telnet 서버는 23번 ftp는 20번, pop3 메일서버는 110번 등 서버마다 다양한 표준 포트가 있습니다.

표준 포트가 아닌 다른 포트를 사용하려고 할때는 반드시 포트번호를 명시해줘야 합니다.

 

포트에는 0번부터 시작하여 65535번을 사용할수가 있습니다.

 

클라이언트

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


/**
 * Trivial client for the date server.
 */
public class ClientClass {

 public static void main(String[] args) throws IOException {

  Socket clientSocket = new Socket("127.0.0.1", 8080);
  BufferedReader inputBufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  String returnMessage = inputBufferedReader.readLine();

  System.out.println("서버로부터 받은 값 " + returnMessage);
  System.exit(0);
 }
}


 

 

서버

 

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

 

public class ServerClass {
 /**
  * Runs the server.
  */
 public static void main(String[] args) throws IOException {
  ServerSocket listnerServerSocket= new ServerSocket(8080);
  try {
   while (true) {
    Socket socket= listnerServerSocket.accept();
    try {
     PrintWriter outPrintWriter= new PrintWriter(socket.getOutputStream(), true);
     String message = "보낼 메세지 테스트 ~~~~~~~~~~~~~~";
     outPrintWriter.println(message);
    } finally {
     socket.close();
    }
   }
  } finally {
   listnerServerSocket.close();
  }
 }
}


 

 

간단하게 서로 시스템에 연결하려면 서버측 소스와 클라이언트 소스가 필요합니다.

전 시스템이 하나만 있는 관계로 서버와 클라이언트 시스템을 제 로컬 컴퓨터로 하였습니다.

해당 2가지 클래스를 컴파일한후

 

먼저 서버를 실행시킵니다.

그리고 클라이언트를 실행시키면 서버측에서 보낸 메세지를 받을수 있습니다.

 

 

결과값 : 서버로부터 받은값 보낼 메세지 테스트~~~~~~~~~~

 

결과값을 보시면 클라이언트 실행시 서버로부터 받은값을 표시해주고 있습니다.

더 정확하게 테스트를 하려면 클라리언트와 서버측 시스템이 서로 분리가 되있으면 정확하게 테스트가 가능합니다.

 

서버측 시스템에서 데이타를 보내면 클라이언트에서는 서버에서 보낸 데이타를 받아서 화면에 출력할수 있습니다.

 

이런 원리를 이용해서 채팅 프로그램도 만들수가 있습니다.

 

이상 java 네트워크 소켓 연결하기 편 포스팅을 마칩니다.

 

 

 

댓글