Chương 2: Lập trình Soket
Số trang: 51
Loại file: pdf
Dung lượng: 500.45 KB
Lượt xem: 18
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Socket tiếng Anh là cái ổ cắm . Nhưng trong tin học khi người ta nói đến giao tiếp socket thì nó lại có ý nghĩa là một phương pháp dùng để giao tiếp giữa các tiến trình khác nhau trong mạng máy tính hay là trên một máy đơn . Socket là một trong những phương thức giao tiếp giữa các quá trình (inter-process communication) như pipe , message queue .... Trong các ứng dụng được viết ngày nay người ta sử dụng công cụ socket này rất nhiều như các Web , FTP .... Trong phần này chúng...
Nội dung trích xuất từ tài liệu:
Chương 2: Lập trình SoketChương 2 LẬP TRÌNH SOCKET 1Nội dung Kiểu dữ liệu và khai báo biến Các hàm socket Các hàm hỗ trợ Mô hình kết nối Client/Server 2Khai báo socket#include int MySock;………………………………………structin_addr{ union { struct { u_char s_b1,s_b2,s_b3,s_b4;} s_un_b; struct {u_short s_w1,s_s2;}S_un_w; u_long S_addr; } S_un;}; 3Khai báo địa chỉ socketstruct sockaddr{ u_sort sa_family; char sa_data[14];};struct sockaddr_in{ sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8];}; 4Khai báo địa chỉ máystruct hostent{ char* h_name; char** h_alias_name; short h_addrtype; short h_length; char** h_addr_list;} 5Khai báo địa chỉ dịch vụstruct servent{ char* s_name; char** s_aliases; short s_port; char s_proto;} 6Khai báo giao thứcstruct protoent{ char* p_name; char** p_aliases; short p_proto;} 7Network byte order là sự khác nhau về thứ tự sắp xếp các byte trong một số interger hoặc long giữa các hệ điều hành các hàm chuyển đổi:short htons(short);long htonl(long);short ntohs(short);long ntohl(long); 8Xử lý địa chỉ IP Chuyển từ dạng chuỗi A.B.C.D sang địa chỉ dạng số longlong inet_addr(char*); Chuyển từ địa chỉ dạng số long sang địa chỉ dạng chuỗi A.B.C.Dchar* inet_ntoa(long); 9Các hàm socket Tạo socket Quản lý kết nối Gửi nhận dữ liệu 10Tạo socketint socket(int af, int type, int protocol); Tham số af- họ giao thức, luôn là AF_INET type – kiểu socket SOCK_STREAM: TCP socket SOCK_DGRAM: UDP socket protocol – giao thức sẽ dùng với socket, thường bằng 0 Giá trị trả về không lỗi: giá trị miêu tả socket Lỗi: INVALID_SOCKET 11Kết nối socket đến portint bind(int socket, struct sockaddr localaddr, int addrlen); Tham số socket: chỉ ra socket cần gắn kết đến cổng localaddr: cấu trúc sockaddr với trường sin_port chỉ ra port cần liên kết đến addrlen: độ dài của trường localaddr Giá trị trả về Nếu có lỗi: SOCKET_ERROR 12Kết nối đến quá trình khácint connect(int socket, struct sockaddr destaddr, int addrlen); Thông số socket: chỉ ra socket nào cần tạo kết nối destaddr: cấu trúc sockaddr với sin_addr và sin_port chỉ ra IP và port addrlen: độ dài của destaddr Giá trị trả về Nếu có lỗi: SOCKET_ERROR 13Tạo hàng đợi cho các kết nối đếnint listen(int socket, int qlength); Thông số socket: chỉ ra socket nào cần tạo hàng đợi qlength: độ dài của hàng đợi cần tạo Giá trị trả về Nếu có lỗi: SOCKET_ERROR 14Chấp nhận kết nối đếnint newsock=accept(int mainsock, struct sockaddr *fromaddr, int *addrlen); Thông số mainsock: socket đang chờ kết nối fromaddr: địa chỉ của máy gửi yêu cầu kết nối đến addrlen: độ dài của fromaddr Giá trị trả về Không lỗi: socket mới, kết nối đến port mới Có lỗi: INVALID_SOCKET 15Gửi dữ liệu qua socket TCP socket int send(int socket, char* buffer,int length,int flags); UDP socketint sendto(int socket,char* buffer,int length,int flags, struct sockaddr desaddr, int addrlen); Giá trị trả về: Thành công: số lượng byte dữ liệu thực sự được gửi Thất bại: giá trị -1 16Gửi dữ liệu qua socket Thông số buffer: địa chỉ bắt đầu của chuỗi dữ liệu cần gửi length: lượng dữ liệu cần gửi flags: các cờ xác định trạng thái gửi destaddr: địa chỉ (IP,port) của quá trình nhận addrlen: độ dài của destaddr 17Nhận dữ liệu từ socket TCP socket int receive(int socket,char* buffer, int length, int flags); UDP socket int receivefrom receivefrom(int socket socket,char* buffer, int length, int flags,struct sockaddr *fromaddr, int *addrlen); Giá trị trả về: Thành công: số lượng byte dữ liệu thực sự được nhận Thất bại: giá trị -1 18Nhận dữ liệu từ socket Thông số buffer: địa chỉ bắt đầu của chuỗi dữ liệu cần nhận length: lượng dữ liệu lớn nhất có thể nhận fl ...
Nội dung trích xuất từ tài liệu:
Chương 2: Lập trình SoketChương 2 LẬP TRÌNH SOCKET 1Nội dung Kiểu dữ liệu và khai báo biến Các hàm socket Các hàm hỗ trợ Mô hình kết nối Client/Server 2Khai báo socket#include int MySock;………………………………………structin_addr{ union { struct { u_char s_b1,s_b2,s_b3,s_b4;} s_un_b; struct {u_short s_w1,s_s2;}S_un_w; u_long S_addr; } S_un;}; 3Khai báo địa chỉ socketstruct sockaddr{ u_sort sa_family; char sa_data[14];};struct sockaddr_in{ sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8];}; 4Khai báo địa chỉ máystruct hostent{ char* h_name; char** h_alias_name; short h_addrtype; short h_length; char** h_addr_list;} 5Khai báo địa chỉ dịch vụstruct servent{ char* s_name; char** s_aliases; short s_port; char s_proto;} 6Khai báo giao thứcstruct protoent{ char* p_name; char** p_aliases; short p_proto;} 7Network byte order là sự khác nhau về thứ tự sắp xếp các byte trong một số interger hoặc long giữa các hệ điều hành các hàm chuyển đổi:short htons(short);long htonl(long);short ntohs(short);long ntohl(long); 8Xử lý địa chỉ IP Chuyển từ dạng chuỗi A.B.C.D sang địa chỉ dạng số longlong inet_addr(char*); Chuyển từ địa chỉ dạng số long sang địa chỉ dạng chuỗi A.B.C.Dchar* inet_ntoa(long); 9Các hàm socket Tạo socket Quản lý kết nối Gửi nhận dữ liệu 10Tạo socketint socket(int af, int type, int protocol); Tham số af- họ giao thức, luôn là AF_INET type – kiểu socket SOCK_STREAM: TCP socket SOCK_DGRAM: UDP socket protocol – giao thức sẽ dùng với socket, thường bằng 0 Giá trị trả về không lỗi: giá trị miêu tả socket Lỗi: INVALID_SOCKET 11Kết nối socket đến portint bind(int socket, struct sockaddr localaddr, int addrlen); Tham số socket: chỉ ra socket cần gắn kết đến cổng localaddr: cấu trúc sockaddr với trường sin_port chỉ ra port cần liên kết đến addrlen: độ dài của trường localaddr Giá trị trả về Nếu có lỗi: SOCKET_ERROR 12Kết nối đến quá trình khácint connect(int socket, struct sockaddr destaddr, int addrlen); Thông số socket: chỉ ra socket nào cần tạo kết nối destaddr: cấu trúc sockaddr với sin_addr và sin_port chỉ ra IP và port addrlen: độ dài của destaddr Giá trị trả về Nếu có lỗi: SOCKET_ERROR 13Tạo hàng đợi cho các kết nối đếnint listen(int socket, int qlength); Thông số socket: chỉ ra socket nào cần tạo hàng đợi qlength: độ dài của hàng đợi cần tạo Giá trị trả về Nếu có lỗi: SOCKET_ERROR 14Chấp nhận kết nối đếnint newsock=accept(int mainsock, struct sockaddr *fromaddr, int *addrlen); Thông số mainsock: socket đang chờ kết nối fromaddr: địa chỉ của máy gửi yêu cầu kết nối đến addrlen: độ dài của fromaddr Giá trị trả về Không lỗi: socket mới, kết nối đến port mới Có lỗi: INVALID_SOCKET 15Gửi dữ liệu qua socket TCP socket int send(int socket, char* buffer,int length,int flags); UDP socketint sendto(int socket,char* buffer,int length,int flags, struct sockaddr desaddr, int addrlen); Giá trị trả về: Thành công: số lượng byte dữ liệu thực sự được gửi Thất bại: giá trị -1 16Gửi dữ liệu qua socket Thông số buffer: địa chỉ bắt đầu của chuỗi dữ liệu cần gửi length: lượng dữ liệu cần gửi flags: các cờ xác định trạng thái gửi destaddr: địa chỉ (IP,port) của quá trình nhận addrlen: độ dài của destaddr 17Nhận dữ liệu từ socket TCP socket int receive(int socket,char* buffer, int length, int flags); UDP socket int receivefrom receivefrom(int socket socket,char* buffer, int length, int flags,struct sockaddr *fromaddr, int *addrlen); Giá trị trả về: Thành công: số lượng byte dữ liệu thực sự được nhận Thất bại: giá trị -1 18Nhận dữ liệu từ socket Thông số buffer: địa chỉ bắt đầu của chuỗi dữ liệu cần nhận length: lượng dữ liệu lớn nhất có thể nhận fl ...
Tìm kiếm theo từ khóa liên quan:
lập trình socket mô hình liên kết hàm hỗ trợ client/server mô hình sử dụng mạng kiểu dữ liệu các hàm hỗ trợ mô hình client / serverGợi ý tài liệu liên quan:
-
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 230 0 0 -
Tóm tắt Đồ án tốt nghiệp Công nghệ thông tin: Lập trình socket và ứng dụng trong game cờ caro
29 trang 135 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 120 0 0 -
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 1 - Trần Hạnh Nhi
98 trang 115 0 0 -
Bài giảng Lập trình C căn bản: Chương 3 - Phạm Thế Bảo
68 trang 62 0 0 -
Đề thi học kì 2 môn Quản trị cơ sở dữ liệu với Access 1 năm 2022 - Trường Cao đẳng nghề Điện Biên
3 trang 60 1 0 -
263 trang 40 0 0
-
Bài giảng học phần Tin học cơ sở - Chương 7: MS Excel
2 trang 40 0 0 -
Giáo án Tin học lớp 8 bài 13: Biểu diễn dữ liệu
5 trang 39 0 0 -
Bài giảng lập trình c căn bản - Trường Apptech - Chương 2
22 trang 38 0 0