Trả về : INVALID_SOCKET nếu có lỗi, ngược lại trả về miêu tả socket mới. Các hàm Winsock sử dụng phía server(2)[r]
(1)Chương 3
1
LẬP TRÌNH WINSOCK (Windows Socket)
Nội dung
Giới thiệu Winsock
BSD socket Windows
Các hàm hỗ trợ
2
Giới thiệu Winsock
Mô tả giao tiếp socket Windows
dựa tên tảng BSD socket
Tồn hàm Windows API
Các hàm chứa DLL
3
Các hàm chứa 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 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 phiên muốn sử dụng
lpWSAData: trỏ, trỏ đến cấu trúc
WSADATA, hàm điền thông tin liên quan đến thư viện
(2)Phiên Winsock
Nền Phiên
Winsock
Windows 95 1.1
Windows 98 2.2
Windows 2000/XP/03 2.2
5
Windows 2000/XP/03 2.2
Windows 95 2.2
Windows CE 1.1
Ví dụ: WSAStartup(MAKEWORD(2,2),lpWSAData);
Kết thúc Winsock
int WSACleanup(void);
Hàm khơng có tham số
Giá trị trả thành công
6
Mã lỗi nhận hàm:
int WSAGetLastError(void)
Chương trình sử dụng Winsock #Include <winsock.h>
WSAStartup()
7
WSACleanup()
Mơ hình Client/Server hướng kết nối
socket() socket()
Winsock Server Winsock Client
8
bind()
listen()
accept()
Address resolution*
(3)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 Tham số:
af : họ địa chỉ, thường AF_INET
type: kiểu socket (SOCK_STREAM, SOCK_DGRAM)
Trả : INVALID_SOCKET có lỗi, ngược lại trả miêu tả socket mới
Các hàm Winsock sử dụng phía server(2)
Hàm kết nối socket đến port:
int bind(SOCKET s,const struct sockaddr FAR* name,int namelen)
Tham số:
11 Tham số:
name: cấu trúc chứa thông tin cổng giao tiếp
namelen: độ dài cấu trúc name
Trả : SOCK_ERROR có lỗi
Các hàm Winsock sử dụng phía server(3)
Hàm tạo hàng đợi chờ kết nối đến:
int listen(SOCKET s, int backlog)
Tham số:
s: socket cần tạo hàng đợi
12
s: socket cần tạo hàng đợi
backlog: độ dài hàng đợi