package TCPtest;

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

public class TCPserver implements Runnable {
 public static final int ServerPort = 4320; // ex: 5555
 public static final String ServerIP = "203.252.21.74"; // ex: 192.168.0.100
 
  @Override
 public void run() {
  // TODO Auto-generated method stub
  try{
   System.out.println("S: Connecting...");
   ServerSocket serverSocket = new ServerSocket(ServerPort);

   while (true) {
    Socket client = serverSocket.accept();
    System.out.println("S: Receiving...");
    // 클라이언트로 부터 소켓을 얻는다.
    
    try {
     // 클라이언트에서 보내준 스트링을 버퍼에 리딩한다.
     BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
     String str = in.readLine();
     // 클라이언트로 부터 받은 스트링을 콘솔창에 출력한다.
     System.out.println("S: Received: '" + str + "'");     
     // 서버가 클라이언트로 부터 받은 스트링을 다시 클라이언트로 보낸다.
     PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream())),true);
     out.println("Server Received1 "+ str);
     
    } catch(Exception e) {
     System.out.println("S: Error");
     e.printStackTrace();
    } finally {
     client.close();
     System.out.println("S: Done.");
     
    }
   }
  } catch (Exception e) {
   System.out.println("S: Error");
   e.printStackTrace();
  }
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Thread desktopServerThread = new Thread(new TCPserver());
  desktopServerThread.start();
  // PC서버 시작
 }
}
