。공부 。

Tcp 소켓통신 Server

kyoe 2007. 9. 22. 15:06

import java.io.*;
import java.net.*;

public class Exam05 {
 public static void main(String[] args){
  ServerSocket ss = null;  
  Socket soc = null;
  try{
   ss = new ServerSocket(12345);   //서버실행 포트12345를 열어논다.
   System.out.println("Server Ready...");
  }catch(IOException ioe){     //해당포트 열려있을 경우 예외처리
   System.out.println("해당 포트가 열려 있습니다.");
   System.exit(-1);
  }
 
  try{
   soc = ss.accept();      //Client 측에서 전송되어온 정보를 soc 소켓에 담는다.
   System.out.println("접속자 정보 : "+ soc.toString());
   BufferedReader in = new BufferedReader(new InputStreamReader(soc.getInputStream())); //soc의 InputStream을 얻어온다.
   String str = in.readLine();    //전송되어온 내용을 String 변수 str에 저장
   System.out.println("전송된 내용 : " + str);
   soc.close();
  }catch(IOException ioe){}
 }
}

//=================================
간단하게 서버를 만들어 실행시키는 프로그램.
accept얻어는 값을 soc 소켓에 저장을 하는데 soc 소켓에는 접속된 클라이언트의 여가지 정보를 갖고있다
예를 들어

public InetAddress getInetAddress() : 소켓이 연결된 주소를 리턴한다.

public InputStream getInputStream() : 소켓에 대한 입력 스트림을 리턴한다.

public InetAddress getLocalAddress() : 소켓이 바인드된 국지 주소를 가져온다.

public int getLocalPort() : 소켓이 바인드된 국지 Port를 리턴한다.

public OutputStream getOutputStream() : 소켓에 대한 출력 스트림을 리턴한다.

public int getPort() : 소켓이 연결된 원격 Port를 리턴한다.

public int getSoLinger() : SO_LINGER에 대한 설정을 리턴한다.

public int getSoTimeout() :  SO_TIMEOUT에 대한 설정을 리턴한다.

public boolean getTcpNoDelay() : TCP_NODELAY가 사용 가능한지 여부를 테스트한다
이외에도 몇가지가 있지만...
여기서 많이 쓰이는
getInetAddress() : 접속된 클라이언트 주소 얻어온다.
getport() : 접속된 클라이언트의 포트 번호 를 얻어온다.
getInputStream() : 소켓에대한 입력스트림 을 리턴