Các thao tác cơ bản trong lập trình socket trên windows
Số trang: 13
Loại file: pdf
Dung lượng: 358.79 KB
Lượt xem: 17
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Yêu cầu thực hành: Viết các chương trình thực hành các lệnh trong bài thực hành này. Tham khảo các chương trình mẫu kèm theo bài thực hành. 1. Cơ chế gọi hàm khi trong lập trình socket
Nội dung trích xuất từ tài liệu:
Các thao tác cơ bản trong lập trình socket trên windows Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT BÀI THỰC HÀNH SỐ 6 Các thao tác cơ bản trong lập trình socket trên windows Yêu cầu thực hành: Viết các chương trình thực hành các lệnh trong bài thực hành này. Tham khảo các chương trình mẫu kèm theo bài thực hành. 1. Cơ chế gọi hàm khi trong lập trình socket 1.1. TCP Hình. Lập trình socket sử dụng TCP 1.2. UDP - Với giao thức UDP, không cần phải thiết lập kết nối trước khi truyền nhận dữ liệu Chương trình server không sử dụng hai hàm listen() và accept() Chương trình client không cần sử dụng hàm connect(). - Sử dụng hàm sendto() thay cho hàm send() trong TCP - Sử dụng hàm recvfrom() thay cho recv() trong TCP Lab 4 Lập trình Socket – TCP & UDP Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT - Client có thể sử dụng hàm connect() để gắn kết cục bộ địa chỉ của máy tính ở xa với một socket cục bộ và sau đó có thể sử dụng hai hàm send() và receive() để truyền, nhận dữ liệu; tuy nhiên không có kết nối nào được thiết lập. 2. Thư viện lập trình Winsock 2.1. Khởi động và đóng thư viện 2.1.1. Khởi động Winsock - Khởi động thư viện Winsock trước khi thực hiện các thao tác khác int WSAStartup(WORD wVersionRequested, LPWSADATA lp WSAData); * Các tham số wVersionRequested: [in] phiên bản của thư viện Winsock cần phải khởi động. Giá trị này gồm 2 byte: byte thấp chỉ số phiên bản chính, byte cao chỉ số phiên bản phụ. Giá trị này có thể được chỉ định rõ (0x0202) hoặc dùng macro MAKEWORD(2,2). lpWSAData: [out] thông tin về thư viện Winsock đã được khởi động, trong đó có chứa phiên bản Winsock. typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; // bỏ qua unsigned short iMaxUdpDg; // bỏ qua char FAR * lpVendorInfo; // bỏ qua } WSADATA, *LPWSADATA; wVersion Phiên bản Winsock cần khởi động Lab 4 Lập trình Socket – TCP & UDP Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT wHighVersion Phiên bản Winsock đã khởi động szDescription Chủ đề của thư viện đã khởi động szSystemStatus Trạng thái hay thông tin cấu hình * Giá trị trả về bằng 0, nếu thành công khác 0, nếu có lỗi. Hàm WSAGetLastError() dùng để xác định lỗi. 2.1.2. Đóng thư viện Winsock - Đóng thư viện Winsock và giải phóng tài nguyên int WSACleanup(void) 2.2. Window socket 2.2.1. Tạo socket SOCKET socket ( int af, int type, int protocol ) * Các tham số af: [in] mô tả họ địa chỉ. type: [in] kiểu của socket. o SOCK_STREAM: TCP socket o SOCK_DGRAM: UDP socket protocol: [in] nghi thức được sử dụng trên socket. Nghi thức Họ Nghi thức sử dụng Kiểu socket tầng dưới địa chỉ trên socket IP AF_INET TCP SOCK_STREAM IPPROTO_IP UDP SOCK_DGRAM IPPROTO_UDP Raw SOCK_RAW IPPROTO_RAW Socket IPPROTO_ICMP * Giá trị trả về socket mới (SOCKET), nếu thành công Lab 4 Lập trình Socket – TCP & UDP Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT INVALID_SOCKET, nếu có lỗi 2.2.2. Kiểm tra và xử lý lỗi - Giá trị lỗi trả về trong các lời gọi hàm Winsock không thành công thường là SOCKET_ERROR (-1). Để lấy chi tiết mã lỗi, sử dụng hàm: int WSAGetLastError (void) * Giá trị trả về Các hằng số lỗi WSAE được định nghĩa trong tập tin Winsock.h hoặc Winsock2.h 2.2.3. Internet Address - Sử dụng cấu trúc SOCKADDR_IN để chỉ định thông tin về địa chỉ IP và cổng dịch vụ typedef struct sockaddr_in{ short sin_family; unsigned short sin_port; struct in_addr sin_addr; char sin_zero[8]; } SOCKADDR_IN; sin_family: họ địa chỉ, phải được thiết lập là AF_INET. sin_port: cổng dịch vụ. sin_addr: địa chỉ IP được chỉ định theo cấu trúc sau: typedef struct in_addr { union { struct{ unsigned char s_b1, s_b2, s_b3, s_b4; } S_un_b; struct { unsigned short s_w1, s_w2; Lab 4 ...
Nội dung trích xuất từ tài liệu:
Các thao tác cơ bản trong lập trình socket trên windows Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT BÀI THỰC HÀNH SỐ 6 Các thao tác cơ bản trong lập trình socket trên windows Yêu cầu thực hành: Viết các chương trình thực hành các lệnh trong bài thực hành này. Tham khảo các chương trình mẫu kèm theo bài thực hành. 1. Cơ chế gọi hàm khi trong lập trình socket 1.1. TCP Hình. Lập trình socket sử dụng TCP 1.2. UDP - Với giao thức UDP, không cần phải thiết lập kết nối trước khi truyền nhận dữ liệu Chương trình server không sử dụng hai hàm listen() và accept() Chương trình client không cần sử dụng hàm connect(). - Sử dụng hàm sendto() thay cho hàm send() trong TCP - Sử dụng hàm recvfrom() thay cho recv() trong TCP Lab 4 Lập trình Socket – TCP & UDP Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT - Client có thể sử dụng hàm connect() để gắn kết cục bộ địa chỉ của máy tính ở xa với một socket cục bộ và sau đó có thể sử dụng hai hàm send() và receive() để truyền, nhận dữ liệu; tuy nhiên không có kết nối nào được thiết lập. 2. Thư viện lập trình Winsock 2.1. Khởi động và đóng thư viện 2.1.1. Khởi động Winsock - Khởi động thư viện Winsock trước khi thực hiện các thao tác khác int WSAStartup(WORD wVersionRequested, LPWSADATA lp WSAData); * Các tham số wVersionRequested: [in] phiên bản của thư viện Winsock cần phải khởi động. Giá trị này gồm 2 byte: byte thấp chỉ số phiên bản chính, byte cao chỉ số phiên bản phụ. Giá trị này có thể được chỉ định rõ (0x0202) hoặc dùng macro MAKEWORD(2,2). lpWSAData: [out] thông tin về thư viện Winsock đã được khởi động, trong đó có chứa phiên bản Winsock. typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; // bỏ qua unsigned short iMaxUdpDg; // bỏ qua char FAR * lpVendorInfo; // bỏ qua } WSADATA, *LPWSADATA; wVersion Phiên bản Winsock cần khởi động Lab 4 Lập trình Socket – TCP & UDP Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT wHighVersion Phiên bản Winsock đã khởi động szDescription Chủ đề của thư viện đã khởi động szSystemStatus Trạng thái hay thông tin cấu hình * Giá trị trả về bằng 0, nếu thành công khác 0, nếu có lỗi. Hàm WSAGetLastError() dùng để xác định lỗi. 2.1.2. Đóng thư viện Winsock - Đóng thư viện Winsock và giải phóng tài nguyên int WSACleanup(void) 2.2. Window socket 2.2.1. Tạo socket SOCKET socket ( int af, int type, int protocol ) * Các tham số af: [in] mô tả họ địa chỉ. type: [in] kiểu của socket. o SOCK_STREAM: TCP socket o SOCK_DGRAM: UDP socket protocol: [in] nghi thức được sử dụng trên socket. Nghi thức Họ Nghi thức sử dụng Kiểu socket tầng dưới địa chỉ trên socket IP AF_INET TCP SOCK_STREAM IPPROTO_IP UDP SOCK_DGRAM IPPROTO_UDP Raw SOCK_RAW IPPROTO_RAW Socket IPPROTO_ICMP * Giá trị trả về socket mới (SOCKET), nếu thành công Lab 4 Lập trình Socket – TCP & UDP Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Khoa Mạng Máy Tính và Truyền Thông – Trường Đại Học CNTT INVALID_SOCKET, nếu có lỗi 2.2.2. Kiểm tra và xử lý lỗi - Giá trị lỗi trả về trong các lời gọi hàm Winsock không thành công thường là SOCKET_ERROR (-1). Để lấy chi tiết mã lỗi, sử dụng hàm: int WSAGetLastError (void) * Giá trị trả về Các hằng số lỗi WSAE được định nghĩa trong tập tin Winsock.h hoặc Winsock2.h 2.2.3. Internet Address - Sử dụng cấu trúc SOCKADDR_IN để chỉ định thông tin về địa chỉ IP và cổng dịch vụ typedef struct sockaddr_in{ short sin_family; unsigned short sin_port; struct in_addr sin_addr; char sin_zero[8]; } SOCKADDR_IN; sin_family: họ địa chỉ, phải được thiết lập là AF_INET. sin_port: cổng dịch vụ. sin_addr: địa chỉ IP được chỉ định theo cấu trúc sau: typedef struct in_addr { union { struct{ unsigned char s_b1, s_b2, s_b3, s_b4; } S_un_b; struct { unsigned short s_w1, s_w2; Lab 4 ...
Tìm kiếm theo từ khóa liên quan:
mạng máy tính giáo trình mạng nhập môn mạng máy tính quản trị mạng máy tính thủ thuật mạng máy tínhGợi ý tài liệu liên quan:
-
173 trang 417 3 0
-
24 trang 351 1 0
-
160 trang 276 2 0
-
Giáo án Tin học lớp 9 (Trọn bộ cả năm)
149 trang 262 0 0 -
80 trang 262 0 0
-
Ngân hàng câu hỏi trắc nghiệm môn mạng máy tính
99 trang 250 1 0 -
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 2
102 trang 243 0 0 -
20 trang 242 0 0
-
47 trang 237 3 0
-
Đề cương chi tiết học phần Thiết kế và cài đặt mạng
3 trang 234 0 0