ݺߣ

ݺߣShare a Scribd company logo
컴퓨터 네트워크 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. 문제점 및 해결방안
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
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())
2. 세부 코드와 설명 - comment 로 설명
a. homework 1
Client
Server
b. homework 2
Client
Server
c. homework 3
Client
Server
3. 소스코드
a. homework 1
Client - hw1_client.c
client와 server에 모두 쓰이는 header
Server - hw1_server.c
b. homework 2
Client - hw2_client.c
client와 server에 모두 쓰이는 header
homework 1에서 추가된 header
Server - hw2_server.c
c. Homework 3 - include 한 header는 hw2 와 동일
Client - hw3_client.c
Server - hw3_server.c
4. 문제점 및 해결방안
- Homework 1에는 특별한 문제점 없음.
- Homework 2에서 filename과 filesize를 서버 측에서 어떻게 구별 할 것인가?
: filename을 보내고 lseek(파일 사이즈 측정용) 함수를 실행함으로써 Server에게
시간적 여유를 줄 수 있었다.
- Homework 3에서 실제 전송한 파일사이즈 보다 서버에서 받은 파일 사이즈가 더
큰 현상이 발생한다.
- Homework 3에서 전송을 종료하는 조건을 클라이언트에서 파일 전송 전 보내온 파
일 사이즈와 실제 서버에 받아진 파일 사이즈를 비교해서 받아진 파일 사이즈가
더 커지면 종료되게 하였다.
-> 중간에 데이터가 손실 되면 전송이 중지 되지 않는다.
-> 바로 전 문제점도 이것이 원인으로 봄
해결방안 : 일정 시간이상 클라이언트에서 서버로 보내는 데이터가 없으면
종료하게 함.
* Buffer Size 관련
수신 쪽 Buffer의 Size가 커야 손실 없이 데이터가 받아 진다. 이유는 어떤
Delay에 의해 앞, 뒤로 불필요한 더미 데이터가 보내질 수 있기 때문이다. 그래서 수신 쪽
Buffer는 송신 쪽 Buffer에 비해 커야 한다.

More Related Content

19.컴퓨터 네트워크 program homework

  • 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
  • 6. 3. 소스코드 a. homework 1 Client - hw1_client.c client와 server에 모두 쓰이는 header
  • 8. b. homework 2 Client - hw2_client.c client와 server에 모두 쓰이는 header homework 1에서 추가된 header
  • 10. c. Homework 3 - include 한 header는 hw2 와 동일 Client - hw3_client.c
  • 12. 4. 문제점 및 해결방안 - Homework 1에는 특별한 문제점 없음. - Homework 2에서 filename과 filesize를 서버 측에서 어떻게 구별 할 것인가? : filename을 보내고 lseek(파일 사이즈 측정용) 함수를 실행함으로써 Server에게 시간적 여유를 줄 수 있었다. - Homework 3에서 실제 전송한 파일사이즈 보다 서버에서 받은 파일 사이즈가 더 큰 현상이 발생한다. - Homework 3에서 전송을 종료하는 조건을 클라이언트에서 파일 전송 전 보내온 파 일 사이즈와 실제 서버에 받아진 파일 사이즈를 비교해서 받아진 파일 사이즈가 더 커지면 종료되게 하였다. -> 중간에 데이터가 손실 되면 전송이 중지 되지 않는다. -> 바로 전 문제점도 이것이 원인으로 봄 해결방안 : 일정 시간이상 클라이언트에서 서버로 보내는 데이터가 없으면 종료하게 함. * Buffer Size 관련 수신 쪽 Buffer의 Size가 커야 손실 없이 데이터가 받아 진다. 이유는 어떤 Delay에 의해 앞, 뒤로 불필요한 더미 데이터가 보내질 수 있기 때문이다. 그래서 수신 쪽 Buffer는 송신 쪽 Buffer에 비해 커야 한다.