import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.io.*;
import java.net.*;
  
public class TCPServer implements Runnable{ 
public static final int serverPort = 80; 
public void run(){ 
           	try{ 
           	    System.out.println("대기중.."); 
           	    ServerSocket serverSocket = new ServerSocket(serverPort); 
           	           	  
           	    while(true) 
           	    { 
           	           	Socket sock = serverSocket.accept(); 
           	           	System.out.println("수신중...."); 
           	           	try{ 
           	           		// 클라이언트에서 보낸 데이터를 서버에서 수신함
           	            	BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream())); 
           	           	    String str = in.readLine(); 
           	           	    System.out.println("수신중인 파일 이름 : " + str); 
           	                File f = new File("C:\\Users\\Administrator\\workspace\\download", str+".txt"); 
           	                FileOutputStream output = new FileOutputStream(f); 
           	           	    byte[] buf = new byte[1024];                       	           	           	                      
           	           	    while(sock.getInputStream().read(buf)>0) 
           	           	    { 
           	           	           	output.write(buf); 
           	           	           	output.flush(); 
           	           	    } 
           	           	    in.close(); 
           	           	    output.close(); 
       	           	    	System.out.println(str+".txt 수신완료"); 
           	        	
       	           	    	
       	           	    	// *************** 새로 추가한 코드 입니다
       	           	    	String message = "Hello from Server";
		       	           	try {  
		                        System.out.println("Server : Sending: '" + message + "'");  
		                        PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(sock.getOutputStream())),true);  
		                            
		                        out.println(message);  
		                        System.out.println("Server : Sent.");  
		                        System.out.println("Server : Done.");  
		                            
		                    } catch(Exception e) {  
		                        System.out.println("S: Error");  
		                     }
		       	           	// ***********************************************
           	           	}
           	           	catch(Exception e){ 
           	           	    System.out.println("서버 에러!!"); 
           	           	    e.printStackTrace(); 
           	           	} 
           	           	finally{ 
           	           	    sock.close(); 
           	           	} 
           	    } 
           	} 
           	catch(Exception e){ 
           	    e.printStackTrace(); 
           	} 
} 
public static void main(String[] argv){ 
Thread doit = new Thread(new TCPServer()); 
           	doit.start(); 
} 
}