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