C++, sebagai bahasa pengaturcaraan berprestasi tinggi dan cekap, juga digunakan secara meluas dalam bidang pengaturcaraan rangkaian. Artikel ini akan memperkenalkan pengetahuan pengaturcaraan rangkaian asas dalam C++, termasuk cara menggunakan perpustakaan soket untuk pengaturcaraan rangkaian, proses komunikasi rangkaian tertentu dan beberapa teknik pengaturcaraan rangkaian biasa.
1. Gunakan perpustakaan soket untuk pengaturcaraan rangkaian
Soket ialah antara muka komunikasi rangkaian berdasarkan protokol TCP/IP, yang membolehkan program pada mesin berbeza berkomunikasi antara satu sama lain. Dalam C++, anda boleh menggunakan perpustakaan soket untuk pengaturcaraan rangkaian. Pustaka soket menyediakan satu set panggilan sistem dan fungsi perpustakaan yang boleh mewujudkan sambungan rangkaian, menghantar dan menerima data dalam program dengan mudah.
Apabila menggunakan perpustakaan soket untuk pengaturcaraan rangkaian, anda perlu mencipta objek soket terlebih dahulu. Kaedah mencipta objek soket biasanya memanggil fungsi socket(), yang menerima tiga parameter: keluarga alamat, jenis soket dan jenis protokol. Contohnya:
#include <sys/socket.h> int fd = socket(AF_INET, SOCK_STREAM, 0);
Antaranya, AF_INET bermaksud menggunakan kluster alamat IPv4, SOCK_STREAM bermaksud menggunakan protokol TCP, dan 0 bermaksud menggunakan protokol lalai sistem.
Seterusnya, anda perlu menyambungkan objek soket yang dibuat ke pelayan. Cara untuk menyambung ke pelayan biasanya menggunakan fungsi connect(). Contohnya:
#include <arpa/inet.h> struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); inet_pton(AF_INET, SERVER_ADDR, &server_addr.sin_addr); if (connect(fd, (const struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { perror("connect error"); exit(1); }
di mana SERVER_PORT dan SERVER_ADDR ialah nombor port dan alamat IP pelayan masing-masing. Fungsi inet_pton() menukar alamat IP jenis rentetan kepada jenis angka. Jika sambungan gagal, anda boleh menggunakan fungsi perror() untuk mengeluarkan maklumat ralat.
Selepas sambungan berjaya, anda boleh menggunakan fungsi send() dan fungsi recv() untuk menghantar dan menerima data. Contohnya:
char buf[BUFSIZ]; ssize_t n; if ((n = recv(fd, buf, BUFSIZ, 0)) == -1) { perror("recv error"); exit(1); }
Antaranya, BUFSIZ mewakili saiz penimbal, dan fungsi recv() mewakili menerima data daripada objek soket.
2. Proses komunikasi rangkaian khusus
Apabila menggunakan perpustakaan soket untuk pengaturcaraan rangkaian, proses komunikasi rangkaian biasa termasuk sambungan antara klien dan pelayan, penghantaran dan penerimaan data, dan penutupan sambungan. Proses khusus adalah seperti berikut:
int fd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); inet_pton(AF_INET, SERVER_ADDR, &server_addr.sin_addr); if (connect(fd, (const struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { perror("connect error"); exit(1); }
char *data = "hello, world!"; if (send(fd, data, strlen(data), 0) == -1) { perror("send error"); exit(1); }
char buf[BUFSIZ]; ssize_t n; if ((n = recv(fd, buf, BUFSIZ, 0)) == -1) { perror("recv error"); exit(1); }
close(fd);
3. Kemahiran pengaturcaraan rangkaian yang biasa digunakan
Apabila melakukan pengaturcaraan rangkaian, anda perlu memberi perhatian kepada beberapa kemahiran pengaturcaraan rangkaian biasa untuk memastikan kebolehpercayaan dan keselamatan komunikasi rangkaian.
Secara ringkasnya, pengetahuan pengaturcaraan rangkaian dalam C++ adalah sangat penting Penguasaan ilmu ini dapat membantu kita berkomunikasi dengan mudah di rangkaian dan melaksanakan pelbagai aplikasi rangkaian.
Atas ialah kandungan terperinci Pengetahuan pengaturcaraan rangkaian asas dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!