Tài liệu Chương 3 LẬP TRÌNH WINSOCK (Windows Socket) - Pdf 10

Chương 3
1
LẬP TRÌNH WINSOCK
(Windows Socket)
Nội dung
 Giới thiệu Winsock
 BSD socket trong Windows
 Các hàm hỗ trợ
2
Giới thiệu Winsock
 Mô tả giao tiếp socket trong Windows
dựa tên nền tảng của BSD socket
 Tồn tại dưới các hàm Windows API

Các hàm cơ bản được chứa trong DLL
3

Các hàm cơ bản được chứa trong DLL
 Ứng dụng 16bit: winsock.dll, winsock.lib
 Ứng dụng 32bit: wsock32.dll,
wsock32.lib
 File header: winsock.h, winsock2.h
Khởi tạo môi trường Winsock
int WSAStartup(WORD wVersionRequested, LPWSADATA
lpWSAData);
 Tham số
 wVersionRequested: phiên bản Winsock muốn
sử dụng. Có thể sử dụng MAKEWORD(x,y) với
4
sử dụng. Có thể sử dụng MAKEWORD(x,y) với
x.y là phiên bản muốn sử dụng
Mô hình Client/Server hướng kết
nối
socket() socket()
Winsock Server
Winsock Client
8
bind()
listen()
accept()
Address
resolution*
connect()
Address resolution
#define MY_PORT 1001
#denfine SERVER_ADDR “192.16.1.1”
struct sockaddr_in server_addr;
9
server_addr.sin_family = AF_INET;
server_addr.sin_addr.S_addr=inet_addr(SERVER_ADDR);
server_addr.sin_port = htons(MY_PORT);
Các hàm Winsock sử dụng phía
server
 Hàm tạo socket:
SOCKET socket(int af,int type,int
protocol)

Tham số:
10


s
: socket cần tạo hàng đợi
 backlog: độ dài của hàng đợi
 Trả về : giá trị âm nếu có lỗi
Các hàm Winsock sử dụng phía
server(4)
 Hàm chấp nhận kết nối đến:
SOCKET accept(SOCKET s,
struct sockaddr FAR* addr,
int FAR* addrlen)
13
int FAR* addrlen)
 Tham số:
 s : socket lắng nghe kết nối
 addr: chứa thông tin địa chỉ IP của máy client
đang yêu cầu kết nối
 addrlen: chiều dài của addr
 Trả về : socket được kết nối với client
Các hàm Winsock sử dụng phía
client
 Hàm tạo socket:
SOCKET socket(int af,int type,int
protocol)
14
(xem hàm tạo socket của Server)
Các hàm Winsock sử dụng phía
client(2)
 Hàm tạo kết nối đến server:
int connect(SOCKET s,


Tham số:
17

Tham số:
 s : socket đã tạo kết nối để truyền dữ liệu
 buff: bộ đệm sẽ chứa dữ liệu
 len: số lượng byte muốn nhận, thường là chiều
dài tối đa của buff
 flags: thường là 0
 Trả về : số lượng byte thật sự đã nhận đi
Các hàm Winsock sử dụng chung
cho client và server
 Hàm đóng socket:
int closesocket(SOCKET s)
 Tham số:

s
: socket đã tạo kết nối để truyền dữ liệu
18

s
: socket đã tạo kết nối để truyền dữ liệu
 Hàm này giải phóng tài nguyên chiếm
dụng bởi mô tả socket s
Mô hình Client/Server hướng không
kết nối
socket() socket()
Winsock Server
Winsock Client

 Trả về : số lượng byte thật sự đã gửi đi
Các hàm truyền nhận hướng không
kết nối (U
DP)
 Hàm nhận dữ liệu:
int recvfrom(SOCKET s,const char FAR* buff,
int len,int flags,
const struct sockaddr FAR* addr,
int FAR* addrlen)

Tham số:
21

Tham số:
 s : socket cần truyền dữ liệu
 buff: bộ đệm chứa dữ liệu sẽ nhận
 len: chiều dài của dữ liệu muốn nhận, thường là chiều
dài tối đa của buff
 flags: thường là 0
 addr: địa chỉ host vừa gửi dữ liệu
 addrlen: chiều dài addr
 Trả về : số lượng byte thật sự đã nhận


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status