Bạn đã bao giờ thắc mắc những chương trình bạn viết hoạt động và giao tiếp như thế nào trong mạng máy tính chưa? Hay đơn giản là làm thế nào để server của bạn có thể nói chuyện với client? Lập trình mạng là một trong những nhiệm vụ căn bản để phát triển các ứng dụng.
Một chương trình mạng được viết ra để các chương trình trên các máy tính khác nhau có thể truyền thông với nhau một cách hiệu quả và an toàn. Dù chúng được cài đặt trên mạng LAN, WAN hay mạng toàn cầu Internet, đây là yếu tố quan trọng cho sự thành công của nhiều hệ thống.
Bạn đang xem: Lập trình Socket, giao tiếp Client và Server bằng ngôn ngữ C (với giao thức TCP)
Hôm nay chúng ta sẽ cùng tìm hiểu cách viết một chương trình socket đơn giản nhất để giao tiếp giữa client và server!
Giới thiệu về Socket
Socket là một giao diện lập trình ứng dụng mạng, thông qua giao diện này, chúng ta có thể lập trình điều khiển việc truyền thông giữa hai máy sử dụng các giao thức mức thấp như TCP, UDP. Bạn có thể tưởng tượng socket như một thiết bị truyền thông hai chiều tương tự như tệp tin. Chúng ta có thể gửi và nhận dữ liệu giữa hai máy, tương tự như việc đọc và ghi trên tệp tin.
Bây giờ, chúng ta sẽ bắt tay vào tìm hiểu cách làm và thực hành.
Viết chương trình phía Server
Để tạo một chương trình phía server, chúng ta cần làm những bước sau:
- Tạo socket bằng hàm
socket(int family, int type, int protocol)
, trong đó các tham số là họ giao thức, kiểu socket, và kiểu giao thức. - Gán địa chỉ cho socket bằng hàm
bind(int sockfd, const struct sockaddr *sockaddr, socklen_t addrlen)
, trong đó các tham số lần lượt là mô tả socket vừa tạo, con trỏ trỏ đến địa chỉ socket, và độ lớn địa chỉ. - Chỉ định socket lắng nghe kết nối bằng hàm
listen(int sockfd, int backlog)
, trong đósockfd
là mô tả socket vừa tạo vàbacklog
là số lượng tối đa các kết nối đang chờ. - Chờ và chấp nhận kết nối bằng hàm
accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)
, lần lượt với các tham số là mô tả socket vừa tạo, con trỏ tới cấu trúc địa chỉ socket của tiến trình kết nối đến, và độ lớn cấu trúc địa chỉ. - Thiết lập kết nối với máy chủ TCP bằng hàm
connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen)
.
Viết chương trình phía Client
Để tạo một chương trình phía client, chúng ta cần làm những bước sau:
- Tạo socket bằng hàm
socket(int family, int type, int protocol)
, trong đó các tham số là họ giao thức, kiểu socket, và kiểu giao thức. - Kết nối tới địa chỉ server bằng hàm
connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr))
. - Đọc dữ liệu từ server và ghi vào biến buffer bằng hàm
read(sock, buffer, 1024)
.
Xem thêm : JavaScript Căn Bản
Dưới đây là demo về một chương trình socket sử dụng ngôn ngữ C đơn giản nhất để tìm hiểu về lập trình mạng. Cảm ơn bạn đã đọc!
// Code phía Server
...
// Code phía Client
...
Sau khi build và run, bạn sẽ có kết quả như hình bên dưới.
Đó là demo về một chương trình socket sử dụng ngôn ngữ C đơn giản nhất để tìm hiểu về lập trình mạng. Cảm ơn bạn đã đọc!
Nguồn: https://laptrinhc.edu.vn
Danh mục: Ngôn ngữ lập trình