th viện socket, giao thức lớp dới là giao thức hớng kết nối TCP. Tiến trình server hoạt động theo kiểu đồng thời (concurrent), server “nghe” ở cổng 1998, khi có một tiến trình client kết nối đến, server nhận số hiệu cổng của client, sinh tiến trình con để phục vụ còn bản thân tiến trình cha tiếp tục quay lại nghe. Tiến trình server phục vụ tạo một kết nối lệnh để truyền lệnh và một kết nối dữ liệu để truyền các khối dữ liệu giữa client và server.
Phần server chạy trên các máy chủ Unix, Windows NT phục vụ cho phần client chạy trên các máy Dos, Windows và Unix. Chơng trình hoạt động gần giống FTP nhng có một số tính năng nâng cao:
72
Gửi lần lượt các gói tin kết thúc bởi một gói có
độ dài là 0
Thông báo số byte đã nhận
Gửi thông báo chấp nhận
Nhận dữ liệu ở kênh dữ liệu tới
khi gói tin có độ dài là 0 Nhận và thông báo với
người sử dụng số byte truyền
Nhận lệnh Gửi yêu cầu
truyền dữ liệu
• Thực hiện lệnh từ xa với EXEC: Chơng trình server nhận lệnh gửi tới từ client, thực hiện lệnh đó và gửi trả kết quả vào kênh truyền, chơng trình client đọc và hiển thị kết quả đó trên màn hình của ngời sử dụng.
• Thực hiện lệnh của hệ điêu hành trên máy trạm !CMD: Một số lệnh của hệ điều hành có thể đợc thực hiện trên máy trạm, chúng đợc tiến trình client giải quyết bằng cách gọi chơng trình thông dịch của hệ điều hành.
• Khả năng thay đổi kích thớc bộ đệm với BUFSIZ kích thớc của bộ đệm có thể đợc thay đổi bằng cách thay đổi biến môi trờng chứa kích thớc bộ đệm. Việc này làm tăng năng suất của việc truyền thông tin trên mạng. • Một số thao tác với th mục trên máy chủ nh tạo th mục, xoá th mục đợc
thực hiện bằng cách gọi các lệnh của hệ điều hành Unix hoặc những hàm mức thấp trong th viện của C.
• Chơng trình còn cung cấp một số lệnh làm việc trực tiếp với tệp nh OPEN,
LSEEK, READ, WRITE... những lệnh này sử dụng th những lời gọi mức
thấp của hệ thống.
Sau đây là những lệnh đã cài đặt trên server
Lệnh Mô tả
EXEC command [option] Chạy một lệnh Unix
USER username [PASS password] Đăng nhập hệ thống
PASSWD password Nhập password
CHPWD newpassword Đổi password
PORT portnumber Đăng ký một cổng truyền dữ liệu
ABORT Loại bỏ quá trình truyền
PWD Lệnh đổi th mục
LIST [option] [directory] Lệnh xem th mục
CHDIR [directory] Lệnh đổi th mục
MKDIR directory [mode] Tạo th mục mới
RMDIR directory Xoá th mục
UNLINK filename Xoá tệp
OPEN path openflag [mode] Mở tệp
LSEEK fildes offset whence Chuyển con trỏ tệp
READ fildes nbytes Đọc từ tệp 73
WRITE fildes nbytes Ghi tệp
LOCKF fildes mode size Khoá tệp
CLOSE filedes Đóng tệp
TMPNAM [path[prefix]] Tạo một tệp tạm thời
PUT filename Truyền tệp lên máy chủ
APPEND filename Mở tệp để append
GET filename Lấy tệp từ máy chủ
HELP Trợ giúp
UNIX Hoạt động ở mode Unix
TNET Hoạt động ở mode Tnet
QUIT Thoát
UMASK [mode] Đặt mặt nạ mode cho file truyền
FMODE filename Xem mode của file
FSIZE filename Xem độ dài của file
BUFSIZ size_of_buffer Đặt lại kích thớc cho bộ đệm
REXEC host user passwd command Chạy một lệnh từ xa
Phần client giao tiếp với ngời sử dụng, nhận lệnh, phân tích lệnh, xử lý hoặc gửi cho server, nhận và trả kết quả lại cho ngời sử dụng.
(Văn bản chơng trình client đợc in trong phần phụ lục C)
Một số vấn đề nảy sinh trong quá trình thực hiện và cách giải quyết
Vấn đề chuyển đổi tệp giữa hai hệ điều hành.