1. Trang chủ
  2. » Công Nghệ Thông Tin

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

51 339 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 500,45 KB

Nội dung

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

w