1. 컴퓨터 네트워크 Program Homework
20800577
장 호 상
목 차
1. 데이터 송수신 흐름도
a. homework 1
b. homework 2
c. homework 3
2. 세부 코드와 설명
a. homework 1
b. homework 2
c. homework 3
3. 소스코드
a. homework 1
b. homework 2
c. homework 3
4. 문제점 및 해결방안
2. 1. 데이터 송수신 흐름도
a. Homework 1
기본적인 TCP 흐름과 같다.
* 자료 송수신
b. homework 2
homework1에서 자료 송수신 부분만 다르며 나머지는 동일하다.
int Student_Number
show Data(Student Information)
Data Load(data.txt)
Search(Student_Number)
struct Student_Information
TCP Server
TCP Client
TCP Client
string filename(user input)
int filesize(use lseek())
TCP Server
while(filesize ==
send filesize){
send (file)
}
while(filesize ==
received filesize){
recv (file)
}
open newfile(filename)
loop
3. c. homework 3
* 데이터 송수신
UDP Client UDP server
sendto(☎,buffer)
recvfrom(☎,buffer)
sendto(☎,buffer)
recvfrom(☎,buffer)
UDP Client
UDP Server
string filename(user input)
open newfile(filename)
while(filesize ==
received filesize){
recvfrom (file)
}
while(filesize ==
send filesize){
sendto (file)
}
int filesize(use lseek())
4. 2. 세부 코드와 설명 - comment 로 설명
a. homework 1
Client
Server
b. homework 2
Client
12. 4. 문제점 및 해결방안
- Homework 1에는 특별한 문제점 없음.
- Homework 2에서 filename과 filesize를 서버 측에서 어떻게 구별 할 것인가?
: filename을 보내고 lseek(파일 사이즈 측정용) 함수를 실행함으로써 Server에게
시간적 여유를 줄 수 있었다.
- Homework 3에서 실제 전송한 파일사이즈 보다 서버에서 받은 파일 사이즈가 더
큰 현상이 발생한다.
- Homework 3에서 전송을 종료하는 조건을 클라이언트에서 파일 전송 전 보내온 파
일 사이즈와 실제 서버에 받아진 파일 사이즈를 비교해서 받아진 파일 사이즈가
더 커지면 종료되게 하였다.
-> 중간에 데이터가 손실 되면 전송이 중지 되지 않는다.
-> 바로 전 문제점도 이것이 원인으로 봄
해결방안 : 일정 시간이상 클라이언트에서 서버로 보내는 데이터가 없으면
종료하게 함.
* Buffer Size 관련
수신 쪽 Buffer의 Size가 커야 손실 없이 데이터가 받아 진다. 이유는 어떤
Delay에 의해 앞, 뒤로 불필요한 더미 데이터가 보내질 수 있기 때문이다. 그래서 수신 쪽
Buffer는 송신 쪽 Buffer에 비해 커야 한다.