Bài giảng Lập trình mạng: Chương 3 - Phạm Trần Vũ
lượt xem 3
download
Bài giảng Lập trình mạng: Chương 3 - Lập trình mạng dùng socket trên sử dụng C sau đây sẽ trang bị cho các bạn những kiến thức về lập trình socket trên unix, lập trình socket với UDP, lập trình socket với TCP. Với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu hữu ích.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình mạng: Chương 3 - Phạm Trần Vũ
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MẠNG DÙNG SOCKET TRÊN SỬ DỤNG C Bài Giảng 3 Khoa Học và Kỹ Thuật Máy Tính Trang 1
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Quản lý socket – Unix: Integer Primitives Meaning SOCKET Create a new communication end point BIND Attach a local address to a socket LISTEN Announce willingness to accept connections; give queue size ACCEPT Block the caller until connection attempt arrives CONNECT Actively attempt to establish a connection SEND Send some data over the connection RECEIVE Receive some data from the connection CLOSE Release the connection Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 2
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 3
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 4
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 5
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 6
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 7
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 8
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thông tin về các hàm dùng cho lập trình socket int socket(int domain, int type, int protocol); Trong đó: – domain (af): họ địa chỉ, thường sử dụng là AF_INET: Internet address – type : Kiểu socket (SOCK_STREAM, SOCK_DGRAM) – protocol : giao thức được dùng, default = 0 int bind(int sockfd, struct sockaddr *my_addr, int addrlen); Trong đó: – sockfd: là socket file descriptor trả về từ hàm socket – my_addr : a pointer to a struct sockaddr (chứa: address, port and IP address ...) – addrlen = sizeof(struct sockaddr). Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 9
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thông tin về các hàm dùng cho lập trình socket int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); Trong đó: - sockfd là socket file descriptor. - serv_addr là struct sockaddr chứa port & IP address đích - addrlen = sizeof(struct sockaddr). int listen(int sockfd, int backlog); Trong đó: - sockfd là socket file descriptor. - backlog là số kết nối cho phép của hàng đợi. Các yêu cầu connect của đối tác sẽ được lưu trong queue cho tới khi được accept Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 10
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thông tin về các hàm dùng cho lập trình socket int accept(int sockfd, void *addr, int *addrlen); Trong đó: - sockfd là socket file descriptor. - addr là pointer trỏ tới sockaddr_in. Xác định ai kết nối tới, kết nối từ port nào. - addrlen là biến int = sizeof(struct sockaddr_in) int send(int sockfd, const void *msg, int len, int flags); int recv(int sockfd, void *buf, int len, unsigned int flags); int read(int sockfd, const void *buf, int len); int write(int sockfd, const void *buf, int len); Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 11
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thông tin về các hàm dùng cho lập trình socket int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen); tolen có giá trị bằng sizeof(struct sockaddr). int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen); fromlen khởi tạo bằng sizeof(struct sockaddr). Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 12
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thông tin về các hàm dùng cho lập trình socket Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 13
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI UDP CLIENT SERVER socket() socket() bind() data sendto() receivefrom() client address receivefrom() data sendto() close() close() Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 14
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI UDP socket() socket() bind() sendto() data receivefrom() close() client address socket() NEW PROCESS receivefrom() sendto() sento()/receivefrom( sendto()/receivefrom( ) data ) close() close() Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 15
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP CLIENT SERVER socket() socket() bind() listen() connect() connection request accept() newsocket send()/receive() data send()/receive() close() close(mainsocket) close(newsocket) Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 16
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP CLIENT SERVER socket() socket() bind() listen() connection connect() request accept() close(mainsocket ) newsocket send()/receive() data send()/receive() NEW PROCESS close() close(newsocket) Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 17
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Client #include #include int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if( argc != 2 ) printf("Usage : gettime "); exit(1); /* Create a TCP socket */ if ( (sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(2); } Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 18
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Client (tiếp theo) /* Specify server’s IP address and port */ bzero (&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons ( 13 ); if (inet_pton (AF_INET, “127.0.0.1”, &servaddr.sin_addr)
- Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Client (tiếp theo) /* Read the date/time from socket */ while ( (n = read ( sockfd, recvline, MAXLINE)) > 0) { recvline[n] = ‘\0’; /* null terminate */ printf(“%s”, recvline); } if (n < 0) { perror("read"); exit(5); } close ( sockfd ); } Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình mạng: Chương 3 - Lương Ánh Hoàng
90 p | 143 | 16
-
Bài giảng Lập trình mạng: Chương 7 - Phạm Trần Vũ
63 p | 110 | 11
-
Bài giảng Lập trình mạng: Chương 1 - Lương Ánh Hoàng
17 p | 122 | 10
-
Bài giảng Lập trình mạng: Chương 2 - ĐH Công nghệ Đồng Nai
65 p | 77 | 8
-
Bài giảng Lập trình mạng: Chương 3 - ThS. Trần Đắc Tốt
37 p | 54 | 7
-
Bài giảng Lập trình mạng: Chương 2 - ThS. Trần Đắc Tốt
49 p | 23 | 7
-
Bài giảng Lập trình mạng: Chương 4 - ĐH Công nghệ Đồng Nai
54 p | 79 | 6
-
Bài giảng Lập trình mạng: Chương 1 - Trương Đình Huy
14 p | 33 | 6
-
Bài giảng Lập trình mạng: Chương 2 - ThS. Trần Đắc Tốt
49 p | 71 | 6
-
Bài giảng Lập trình mạng - Chương 5: Lập trình Web - CGI
112 p | 75 | 5
-
Bài giảng Lập trình mạng - Chương 1: Giới thiệu Lập trình mạng
18 p | 63 | 4
-
Bài giảng Lập trình mạng: Chương 2 - Phạm Trần Vũ
38 p | 80 | 4
-
Bài giảng Lập trình mạng: Chương 1 - ĐH Công nghệ Đồng Nai
23 p | 71 | 4
-
Bài giảng Lập trình mạng - Chương 2: Lập trình mạng với thư viện Winsock của Windows
37 p | 44 | 3
-
Bài giảng Lập trình mạng - Chương 5: Lập trình với hệ thống web
41 p | 30 | 3
-
Bài giảng Lập trình mạng - Chương 7: Chương trình chat trên nhiều máy
19 p | 49 | 3
-
Bài giảng Lập trình mạng: Chương 4 - Phạm Trần Vũ
10 p | 102 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn