Tài liệu Chương 2: Lập trình Soket pptx

51 339 1
Tài liệu Chương 2: Lập trình Soket pptx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 2 1 LẬP TRÌNH SOCKET Nội dung  Kiểu dữ liệu và khai báo biến  Các hàm socket  Các hàm hỗ trợ 2  Mô hình kết nối Client/Server Khai báo socket #include <sys/socket.h> int MySock; ……………………………………… structin_addr{ union { struct { u_char s_b1,s_b2,s_b3,s_b4;} s_un_b; 3 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; }; Khai báo địa chỉ socket struct sockaddr { u_sort sa_family; char sa_data[14]; }; struct sockaddr_in { 4 { sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; Khai báo địa chỉ máy struct hostent { char* h_name; char** h_alias_name; 5 char** h_alias_name; short h_addrtype; short h_length; char** h_addr_list; } Khai báo địa chỉ dịch vụ struct servent { char* s_name; 6 char** s_aliases; short s_port; char s_proto; } Khai báo giao thức struct protoent { char* p_name; 7 char** p_aliases; short p_proto; } Network 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: 8  các hàm chuyển đổi: short htons(short); long htonl(long); short ntohs(short); long ntohl(long); Xử lý địa chỉ IP  Chuyển từ dạng chuỗi A.B.C.D sang địa chỉ dạng số long long inet_addr(char*);  Chuyển từ địa chỉ dạng số long sang 9  Chuyển từ địa chỉ dạng số long sang địa chỉ dạng chuỗi A.B.C.D char* inet_ntoa(long); Các hàm socket  Tạo socket  Quản lý kết nối  Gửi nhận dữ liệu 10 [...]... dữ liệu qua socket  TCP socket int send(int socket, char* buffer,int length,int flags);  UDP socket int 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 16 Gử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ủa quá trình nhận  addrlen: độ dài của destaddr 17 Nhậ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 18 Nhận dữ liệu từ... lượng byte dữ liệu thực sự được nhận  Thất bại: giá trị -1 18 Nhậ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  flags: các cờ xác định trạng thái nhận  fromaddr: địa chỉ (IP,port) của quá trình nhận  addrlen: độ lớn của fromaddr 19 Các hàm hỗ trợ (1)  Lấy tên của máy cục bộ int gethostname(char *name,int *namelen) ... 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 12 Kết nối đến quá trình khác int 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 . Chương 2 1 LẬP TRÌNH SOCKET Nội dung  Kiểu dữ liệu và khai báo biến  Các hàm socket  Các hàm hỗ. số lượng byte dữ liệu thực sự được gửi  Thất bại: giá trị -1 Gử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:

Ngày đăng: 26/01/2014, 17:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan