network programming 3
TRANSCRIPT
Bùi Quang Minh
Network Programming
Socket Options
Application
TCP/UDP
IP
Data Link
Data
Port
Address
Application
TCP/UDP
IP
Data Link
Data
Port
Address
Gửi Nhận Socket API Socket API
Socket Options Socket API: cung cấp các thông tin (Data,
Port, Address…). Hệ thống: Đóng gói và bóc tách thông tin
từ và tới các hàm API. HẠN CHẾ Cần phải có cách để can thiệp vào quá
trong đóng gói và bóc tách thông tin của hệ thống
Socket Options
Application
TCP/UDP
IP
Data Link
Data
Port
Address
Application
TCP/UDP
IP
Data Link
Data
Port
Address
Gửi Nhận
Socket API Socket API Options Options
Socket Options Socket API liên quan đến xử lý Option
int setsockopt (
SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen
);
Socket Options
Level: các kiểu socket áp dụng options.
SOL_SOCKET: option áp dụng các kiểu socket
IPPROTO_TCP: option áp dụng cho tầng TCP
IPPROTO_IP: option áp dụng cho tầng IP
…
Optname: Các kiểu options được định nghĩa sẵn
IP_TTL (IPPROTO_IP): Thiết lập TTL cho cho gói
tin IP.
SO_MAX_MSG_SIZE (SOL_SOCKET): Thiết lập
kích thước tối đa của một gói tin.
SO_KEEPALIVE (SOL_SOCKET):
…
Socket Options
Ví dụ sử dụng setsockopt
Hàm getsockopt()
Socket Options
Socket I/O ?
Ioctlsocket(), WSAioctl()
int ioctlsocket(
__in SOCKET s,
__in long cmd,
__inout u_long *argp
);
Socket Options
Cmd: cờ lệnh
FIONBIO: đặt I/O ở chế độ không chờ.
FIONREAD: yêu cầu số lượng dữ liệu
đọc trên socket.
…
Argp: tham số phụ thuộc cờ lệnh
Ví dụ
Winsock I/O – Chế độ I/O T
ime
Chế độ chờ (blocking)
Application System
init socket
send()/recv()
close socket
Winsock I/O – Chế độ I/O T
ime
Chế độ không chờ (non-blocking)
Application System
init socket
send()/recv()
close socket
Làm việc khác
Winsock I/O – Mô hình I/O
Mô hình I/O: một số cách thức vào ra dữ liệu.
Sử dụng các hàm winsock để cài đặt mô hình.
Kết hợp sử dụng chế độ I/O để nâng cao hiệu năng ứng dụng.
Winsock I/O – Chế độ I/O T
ime
Mô hình Select
Application System
init socket
Cài đặt select
close
socket
Đọc
Ghi
Xử lý dữ liệu
Đọc
Winsock I/O – Mô hình I/O Cài đặt mô hình Select
int select( int nfds, fd_set FAR * readfds, fd_set FAR * writefds, fd_set FAR * exceptfds, const struct timeval FAR * timeout ); FD_SET(), FD_ISSET(), FD_ZERO()
Ví dụ
Winsock I/O – Mô hình I/O
Mô hình WSAAsyncSelect
Giống mô hình Select nhưng sử dụng cơ chế thông điệp của Windows.
Hàm WSAAsyncSelect()
Mô hình WSAEventSelect
Giống mô hình Select nhưng sử dụng Event Object.
WSAEventSelect(), WSAWaitForMultipleEvents().
Winsock I/O – Mô hình I/O Mô hình Overlapped
Các mô hình I/O đã giới thiệu yêu cầu vào ra và xử lý lần lượt.
Overlapped cho phép thực hiện nhiều các thao tác vào ra cùng một lúc. tăng hiệu năng.
Các phương thức cài đặt mô hình Overlapped Event notification: WSACreateEvent(),
WSAWaitForMultipleEvents(), WSAResetEvent()…
Completion routines: hàm CALLBACK routine, WSARecv(routine), WSASend(routine).
Winsock I/O – Mô hình I/O
Mô hình Completion Port
Kết hợp mô hình Overlapped + nhiều worker thread
Winsock I/O – Mô hình I/O
Có rất nhiều mô hình Socket I/O trên
môi trường Windows
Ứng dụng mạng nên chọn mô hình nào
thì phù hợp ?
Client & Server có thể sử dụng bất cứ
mô hình dữ liệu.
Server yêu cầu hiệu năng cao nên sử
dụng mô hình Completion Port.
Winsock I/O – Mô hình I/O
Tài liệu + Mã nguồn
1. MSDN
2. Source Demo
Socket Application
Ứng dụng
Client-Server
B
Socket I/O
C Protocol
(RFC)
A Socket
cơ bản
SMTP
Email System
Server
Google Mail
Yahoo Mail
HotMail
Argomail Server Software
Client
Client
Client
POP3
Outlook Mail
SMTP Protocol
Giao thức gửi mail từ Client đến
Server
RFC 821
Cổng 25
Ví dụ
MIME
Với những email có nội dung phức tạp ?
Sử dụng MIME
RFC
RFC 2045: Format of Internet
Message Bodies
RFC 2046: Media Types
…
RFC 2049
Chú ý: Base64
POP3
Giao thức nhập Mail từ Server về Client
RFC 1939
Cổng 110
HOMEWORK
Làm việc theo nhóm.
2 tuần để hoàn thành.
Trình bày những gì đã làm một cách ngắn gọn.
Phần mềm có giao diện
12/10/2010
Điểm giữa kỳ.
HOMEWORK SMTP Protocol:
Gửi email có nội dung là text (do người dùng nhập vào) đến một địa chỉ email khác.
Test: ArgoMail Server nhận mail từ ứng dụng, nhận email đó bằng outlook
POP3 Protocol: Nhận email có nội dung bất kỳ tư mail server
Test: Outlook gửi mail, ứng dụng kết nối argomail để nhận mail và ghi ra file nội dung nhận được.
MIME: Sinh file có định dạng MIME (nội dung chính của email
+ đính kèm 1 file bất kỳ).
Test: mở file sinh ra bằng Outlook.