C++ menyediakan fungsi penubuhan dan pengurusan untuk soket sisi pelayan, termasuk mencipta soket melalui soket(), alamat penjilidan dan port melalui bind(), dan mendengar sambungan melalui listen(). Setelah ditubuhkan, anda boleh menggunakan accept() untuk menerima sambungan, send()/recv() untuk menghantar/menerima data, dan akhirnya menutup soket dengan close().
Bagaimana fungsi C++ mencipta dan mengurus soket sisi pelayan dalam pengaturcaraan rangkaian
Dalam pengaturcaraan rangkaian, soket sisi pelayan adalah kunci kepada komunikasi antara proses dan klien. C++ menyediakan set fungsi yang kaya untuk membangunkan aplikasi rangkaian yang boleh digunakan untuk mewujudkan dan mengurus soket di bahagian pelayan.
Mewujudkan soket sisi pelayan
Untuk mewujudkan soket sisi pelayan, langkah berikut perlu dipanggil:
socket()
. socket()
函数创建一个套接字。bind()
函数将套接字与一个地址和端口号绑定。listen()
函数使套接字处于监听状态。#include <iostream> #include <sys/socket.h> #include <netinet/in.h> int main() { // 创建套接字 int server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd == -1) { std::cerr << "socket() failed" << std::endl; return -1; } // 绑定套接字 struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); int bind_result = bind(server_fd, (struct sockaddr *) &server_addr, sizeof(server_addr)); if (bind_result == -1) { std::cerr << "bind() failed" << std::endl; return -1; } // 监听套接字 int listen_result = listen(server_fd, 5); if (listen_result == -1) { std::cerr << "listen() failed" << std::endl; return -1; } // ... // 处理客户端连接的代码 }
管理服务器端套接字
一旦套接字建立,可以将其用于与客户端进行通信。以下是如何管理服务器端套接字的几种主要方法:
accept()
函数接受来自客户端的连接。send()
和 recv()
函数发送和接收数据。close()
Gunakan fungsi bind()
untuk mengikat soket ke alamat dan nombor port. listen()
untuk meletakkan soket dalam keadaan mendengar. #include <iostream> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> // for close() int main() { // 创建套接字 int server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd == -1) { std::cerr << "socket() failed" << std::endl; return -1; } // 绑定套接字 struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); int bind_result = bind(server_fd, (struct sockaddr *) &server_addr, sizeof(server_addr)); if (bind_result == -1) { std::cerr << "bind() failed" << std::endl; return -1; } // 监听套接字 int listen_result = listen(server_fd, 5); if (listen_result == -1) { std::cerr << "listen() failed" << std::endl; return -1; } // 接受客户端连接 int client_fd; while ((client_fd = accept(server_fd, (struct sockaddr *) NULL, NULL)) != -1) { // 为客户端创建子进程进行处理 if (fork() == 0) { // ... // 处理客户端连接的代码 close(client_fd); exit(0); } } // 关闭套接字 close(server_fd); return 0; }
accept()
untuk menerima sambungan daripada pelanggan. 🎜🎜🎜🎜Gunakan fungsi send()
dan recv()
untuk menghantar dan menerima data. 🎜🎜🎜🎜Gunakan fungsi close()
untuk menutup soket. 🎜🎜🎜🎜🎜Kes Praktikal: Pelayan TCP🎜🎜🎜Berikut ialah contoh pelayan TCP C++ mudah yang menunjukkan cara mewujudkan dan mengurus soket sisi pelayan: 🎜rrreeeAtas ialah kandungan terperinci Bagaimanakah fungsi C++ mewujudkan dan mengurus soket sisi pelayan dalam pengaturcaraan rangkaian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!