PracticalSocketC#4[1].0

Download Report

Transcript PracticalSocketC#4[1].0

Network Programming
Week #4
J.P. Yoo
[email protected]
Making a application
protocol header
…beyond simple datatypes
Assignment #4 – Simple FTP
• 개요
– 서버와 클라이언트는 파일을 주고 받는다.
• 상세 정보
– 클라이언트는 실행 인자로 서버의 IP와 Port를 입력받는다.
• SFtpclient 203.252.164.144 5000
– 실행 후 클라이언트는 다음의 명령어를 입력받을수 있다.
• get(download), put(upload), exit
– Up/download는 모두 ack를 전송하며 ack를 수신하면 메시지
를 화면에 출력한다.
– 메시지 헤더를 구성하고 필드의 정의를 sftpHdr.h에 저장하고
서버와 클라이언트가 모두 sftpHdr.h를 include하여 코드를 구
현하라
• 제출물
– 소스 코드, 실행코드, 헤더 구조(필드 크기 포함)한 메시지 플로
우 (6번 슬라이드 참조)
Assignment #4 – Simple FTP
• Challenge
– 위의 기본 명령어 put, get에 자신의 디렉토리 목록
을 볼 수 있는 ‘ls’ 및 서버의 디렉토리 목록을 볼 수
있는 ‘rls(remote ls)’ 명령어를 추가하라.
– 디렉토리 이동이 가능한 ‘cd’ 및 서버의 디렉토리 이
동이 가능한 ‘rcd’를 추가하라
– 파일의 업, 다운로드 진행상황을 그래픽하게(ascii)
표현하라
• Directory related functions
– opendir, readdir, closedir, scandir
• Change Directory functions
– chdir(), system(“cd location”)
Simple FTP client Scenario
• 아래는 하나의 예, 본인 마음대로 구성할 것
#SFtpClient 203.252.164.143 5000
Welcome to Simple FTP client!
ftp command [p)ut
g)et
l)s
r)ls
e)xit ] -> p
put filename -> test.txt
############ 60% sending
test.txt uploading success to 203.252.164.143
ftp command [p)ut
#
g)et
r)ls
e)xit ] -> e
In assignment #3
Header.h
/* Message Type */
#define
EchoReq
#define
FileUpReq
#define
EchoRep
#define
FileAck12
char MsgType;
01
02
11
In assignment #3
• Message Flow
– Echo
MsgType[1]
String[256]
Server
Client
Echostring[256]
MsgType[1]
– Put
MsgType[1]
FileName[256] FileSize[4]
File Contents[var]
Server
Client
MsgType[1]