Danh mục

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    
Hoai.2512

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 ...

Tài liệu được xem nhiều: