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 {  
 
           	    while ( true )  
           	    {  
           	           	Socket  sock 
=  serverSocket.
accept ( ) ;              	           	System .
out .
println ( "수신중...." ) ;              	           	try {  
           	           		// 클라이언트에서 보낸 데이터를 서버에서 수신함 
           	           	    System .
out .
println ( "수신중인 파일 이름 : "  +  str
) ;              	                File  f 
=  new  File ( "C:\\ Users\\ Administrator\\ workspace\\ download" , str
+ ".txt" ) ;              	           	    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 
+  "'" ) ;     
		                        out.println ( message) ;   
		                        System .
out .
println ( "Server : Sent." ) ;    		                        System .
out .
println ( "Server : Done." ) ;     
		                        System .
out .
println ( "S: Error" ) ;    		                     } 
		       	           	// *********************************************** 
           	           	} 
           	           	    System .
out .
println ( "서버 에러!!" ) ;              	           	    e.printStackTrace ( ) ;  
           	           	}  
           	           	finally {  
           	           	    sock.close ( ) ;  
           	           	}  
           	    }  
           	}  
           	    e.printStackTrace ( ) ;  
           	}  
}  
public  static  void  main
( String [ ]  argv
) {             	doit.start ( ) ;  
}  
} 
 
				aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7IAppbXBvcnQgamF2YS5pby5GaWxlOyAKaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsgCmltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyOyAKaW1wb3J0IGphdmEubmV0LlNlcnZlclNvY2tldDsgCmltcG9ydCBqYXZhLm5ldC5Tb2NrZXQ7IAppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS5uZXQuKjsKICAKcHVibGljIGNsYXNzIFRDUFNlcnZlciBpbXBsZW1lbnRzIFJ1bm5hYmxleyAKcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgc2VydmVyUG9ydCA9IDgwOyAKcHVibGljIHZvaWQgcnVuKCl7IAogICAgICAgICAgIAl0cnl7IAogICAgICAgICAgIAkgICAgU3lzdGVtLm91dC5wcmludGxuKCLrjIDquLDspJEuLiIpOyAKICAgICAgICAgICAJICAgIFNlcnZlclNvY2tldCBzZXJ2ZXJTb2NrZXQgPSBuZXcgU2VydmVyU29ja2V0KHNlcnZlclBvcnQpOyAKICAgICAgICAgICAJICAgICAgICAgICAJICAKICAgICAgICAgICAJICAgIHdoaWxlKHRydWUpIAogICAgICAgICAgIAkgICAgeyAKICAgICAgICAgICAJICAgICAgICAgICAJU29ja2V0IHNvY2sgPSBzZXJ2ZXJTb2NrZXQuYWNjZXB0KCk7IAogICAgICAgICAgIAkgICAgICAgICAgIAlTeXN0ZW0ub3V0LnByaW50bG4oIuyImOyLoOykkS4uLi4iKTsgCiAgICAgICAgICAgCSAgICAgICAgICAgCXRyeXsgCiAgICAgICAgICAgCSAgICAgICAgICAgCQkvLyDtgbTrnbzsnbTslrjtirjsl5DshJwg67O064K4IOuNsOydtO2EsOulvCDshJzrsoTsl5DshJwg7IiY7Iug7ZWoCiAgICAgICAgICAgCSAgICAgICAgICAgIAlCdWZmZXJlZFJlYWRlciBpbiA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoc29jay5nZXRJbnB1dFN0cmVhbSgpKSk7IAogICAgICAgICAgIAkgICAgICAgICAgIAkgICAgU3RyaW5nIHN0ciA9IGluLnJlYWRMaW5lKCk7IAogICAgICAgICAgIAkgICAgICAgICAgIAkgICAgU3lzdGVtLm91dC5wcmludGxuKCLsiJjsi6DspJHsnbgg7YyM7J28IOydtOumhCA6ICIgKyBzdHIpOyAKICAgICAgICAgICAJICAgICAgICAgICAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKCJDOlxcVXNlcnNcXEFkbWluaXN0cmF0b3JcXHdvcmtzcGFjZVxcZG93bmxvYWQiLCBzdHIrIi50eHQiKTsgCiAgICAgICAgICAgCSAgICAgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIG91dHB1dCA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGYpOyAKICAgICAgICAgICAJICAgICAgICAgICAJICAgIGJ5dGVbXSBidWYgPSBuZXcgYnl0ZVsxMDI0XTsgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgIAkgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgCSAgICAgICAgICAgCSAgICB3aGlsZShzb2NrLmdldElucHV0U3RyZWFtKCkucmVhZChidWYpPjApIAogICAgICAgICAgIAkgICAgICAgICAgIAkgICAgeyAKICAgICAgICAgICAJICAgICAgICAgICAJICAgICAgICAgICAJb3V0cHV0LndyaXRlKGJ1Zik7IAogICAgICAgICAgIAkgICAgICAgICAgIAkgICAgICAgICAgIAlvdXRwdXQuZmx1c2goKTsgCiAgICAgICAgICAgCSAgICAgICAgICAgCSAgICB9IAogICAgICAgICAgIAkgICAgICAgICAgIAkgICAgaW4uY2xvc2UoKTsgCiAgICAgICAgICAgCSAgICAgICAgICAgCSAgICBvdXRwdXQuY2xvc2UoKTsgCiAgICAgICAJICAgICAgICAgICAJICAgIAlTeXN0ZW0ub3V0LnByaW50bG4oc3RyKyIudHh0IOyImOyLoOyZhOujjCIpOyAKICAgICAgICAgICAJICAgICAgICAJCiAgICAgICAJICAgICAgICAgICAJICAgIAkKICAgICAgIAkgICAgICAgICAgIAkgICAgCS8vICoqKioqKioqKioqKioqKiDsg4jroZwg7LaU6rCA7ZWcIOy9lOuTnCDsnoXri4jri6QKICAgICAgIAkgICAgICAgICAgIAkgICAgCVN0cmluZyBtZXNzYWdlID0gIkhlbGxvIGZyb20gU2VydmVyIjsKCQkgICAgICAgCSAgICAgICAgICAgCXRyeSB7ICAKCQkgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlciA6IFNlbmRpbmc6ICciICsgbWVzc2FnZSArICInIik7ICAKCQkgICAgICAgICAgICAgICAgICAgICAgICBQcmludFdyaXRlciBvdXQgPSBuZXcgUHJpbnRXcml0ZXIoIG5ldyBCdWZmZXJlZFdyaXRlciggbmV3IE91dHB1dFN0cmVhbVdyaXRlcihzb2NrLmdldE91dHB1dFN0cmVhbSgpKSksdHJ1ZSk7ICAKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4obWVzc2FnZSk7ICAKCQkgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlciA6IFNlbnQuIik7ICAKCQkgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlciA6IERvbmUuIik7ICAKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7ICAKCQkgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlM6IEVycm9yIik7ICAKCQkgICAgICAgICAgICAgICAgICAgICB9CgkJICAgICAgIAkgICAgICAgICAgIAkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgIAkgICAgICAgICAgIAl9CiAgICAgICAgICAgCSAgICAgICAgICAgCWNhdGNoKEV4Y2VwdGlvbiBlKXsgCiAgICAgICAgICAgCSAgICAgICAgICAgCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIuyEnOuyhCDsl5Drn6whISIpOyAKICAgICAgICAgICAJICAgICAgICAgICAJICAgIGUucHJpbnRTdGFja1RyYWNlKCk7IAogICAgICAgICAgIAkgICAgICAgICAgIAl9IAogICAgICAgICAgIAkgICAgICAgICAgIAlmaW5hbGx5eyAKICAgICAgICAgICAJICAgICAgICAgICAJICAgIHNvY2suY2xvc2UoKTsgCiAgICAgICAgICAgCSAgICAgICAgICAgCX0gCiAgICAgICAgICAgCSAgICB9IAogICAgICAgICAgIAl9IAogICAgICAgICAgIAljYXRjaChFeGNlcHRpb24gZSl7IAogICAgICAgICAgIAkgICAgZS5wcmludFN0YWNrVHJhY2UoKTsgCiAgICAgICAgICAgCX0gCn0gCnB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3YpeyAKVGhyZWFkIGRvaXQgPSBuZXcgVGhyZWFkKG5ldyBUQ1BTZXJ2ZXIoKSk7IAogICAgICAgICAgIAlkb2l0LnN0YXJ0KCk7IAp9IAp9