Wednesday, August 8, 2007

ServerSocket

서버에 저장할 파일명 IP:PORT 로 하는거랑 파일제대로 전송된건지 하는거랑 쪼개서 보내는건
아직 못했어요..ㅠㅠ 곧 할게요..ㅋㅋㅋ이거하는대도 무지 힘들었음..ㅠ

import java.net.*;
import java.io.*;
public class SeverSocket {
public static void main(String[] args){

File fl = null; //읽어온 내용 저장할 파일(blank.txt에 저장할것임(아무내용도 없어야함))
try{

ServerSocket server =new ServerSocket(10001);
System.out.println("접속을 기다립니다");
Socket sock =server.accept();
InetAddress inetaddr =sock.getInetAddress();
System.out.println(inetaddr.getHostAddress()+"로부터 접속했습니다");
InputStream in =sock.getInputStream();
OutputStream out =sock.getOutputStream();
fl = new File("C:\\Documents and Settings\\mina\\workspace\\Echo\\src\\blank.txt");
//파일이름은 클라이언트 IP:PORT 이므로 inetaddr.getHostAddress() + sock.getPort()+ ".txt"
BufferedInputStream bin = new BufferedInputStream(in);
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(fl));

int len =0;
if(bin != null){
while((len =bin.read()) != -1){
bout.write(len);
bout.flush();
}
System.out.println("[Server]:파일받기완료");
/*파일전송 성공시 or 실패시
if(){
out.write("success!!");
out.flush();
}
else{
out.write("fail!!");
out.flush();
}
*/
}
bout.close();
bin.close();
sock.close();
}catch(Exception e){
System.out.println(e);
}
}
}

3 comments:

HyukHo Kim said...

책 정독 안했지???
저장할 파일제목을 "IP:PORT"로 하라는 것은 서버에 접속한 클라이언트의 IP와 PORT를 가져와서 그걸로 파일제목으로 사용하란 말이었다.
Socket socket = ss.accept();
System.out.println(socket.toString() + ":" + socket.getInetAddress().getHostAddress() + ", " + socket.getPort());
해보면 클라이언트 IP,PORT를 출력할거야.
String fileName = socket.getInetAddress().getHostAddress() + socket.getPort();
그럼 new File(fileName); 하면 되자나 잉~

그리고 파일이 제대로 갔는지는 파일 크기를 함께 보내면 되자나..그래서 전송받은 파일크기와 전송받아서 쓴 파일 크기를 비교해서 같으면 제대로 온거고, 아니면 제대로 안온거지...ㅡㅡ;;

HyukHo Kim said...

왜 코멘트가 안올라가....망할 구글블로그....

mn said...

오키오키~ㅋㅋ 전 짐 학원이에요
집에가서 과외하고 해볼게요 ^^
그래서 아직 덜 했다고 했자나요 흥!!ㅋㅋ