출력스트림 입력스트림은 데이타 전송을 위한 통로이다.
서버의 출력 스트림이 클라이언트 입력스트립과연결
클라이언트에서 큐라는 무자가 들어오면 일방적으로 연결을끊는것은
안전한 방법이아닌 문제가 될수 있다.
하프 클로으즈라는것을 쓰면 입력 및 출력 스트림중 하나만 종료하는행위이다.
이것이 리눅스에서는 셧타운 이라는 함수이다.
입력스트림이라는건 언제 들어올지 모르기 때문에 입력스트림은 나두고 출력스트림은 종료할수있다.
내가 안쓰면 그만이기때문에 eof메세지를 서버쪽에 전송해주고 서버가 입력스트림을 끝내고
서버가 더이상 클라이언트에 할말이 없을때 연결은 끈나게된다.
서버로부터 파일을 받아서 저장을 한다.
서버쪽에서 출력스트림을 닫게 되면 0을 리턴을하고
클라이언트는 서버쪽에서 더이상 받을 데이타가 없다고 인식하고
땡큐를 날리고 닫는다.
데이타파일을 서버가 생성해서준다. 그래서 클라이언트에서 보면 파일이 하나 받아져있고
받은 파일을 보면 소스파일이다.
파일서버에서 클라이언트
접속하면
서버가 환영 메세지를 보내준다.
파일명을 날려준다
오픈해서 파일명을보고 반환값을 봐서
파일의 존재여부를 알려준다.
전송요쳥을한다.
서버가 전송요청을 받고
루푸안에서 파일을 전송해준다.
write sock 클라이언트 전송해준다.
read fd 파일에서 계속 읽어서
루푸안에서 계속 리드하면서(read sock)
파일에다가 계속 라이트한다 (Wirte fd)