Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstellen und verwalten C++-Funktionen serverseitige Sockets in der Netzwerkprogrammierung?

Wie erstellen und verwalten C++-Funktionen serverseitige Sockets in der Netzwerkprogrammierung?

PHPz
PHPzOriginal
2024-04-26 13:03:02937Durchsuche

C++ bietet Einrichtungs- und Verwaltungsfunktionen für serverseitige Sockets, einschließlich der Erstellung von Sockets über socket(), der Bindung von Adressen und Ports über bind() und der Überwachung auf Verbindungen über listen(). Sobald die Verbindung hergestellt ist, können Sie mit „accept()“ die Verbindung akzeptieren, mit „send()/recv()“ Daten senden/empfangen und schließlich den Socket mit „close()“ schließen.

C++ 函数在网络编程中如何建立和管理服务器端套接字?

Wie C++-Funktionen serverseitige Sockets in der Netzwerkprogrammierung erstellen und verwalten

In der Netzwerkprogrammierung sind serverseitige Sockets der Schlüssel zur Kommunikation zwischen dem Prozess und dem Client. C++ bietet umfangreiche Funktionen für die Entwicklung von Netzwerkanwendungen, mit denen serverseitig Sockets eingerichtet und verwaltet werden können.

Einrichten eines serverseitigen Sockets

Um einen serverseitigen Socket einzurichten, müssen die folgenden Schritte aufgerufen werden:

  1. Erstellen Sie einen Socket mit der Funktion socket(). socket() 函数创建一个套接字。
  2. 使用 bind() 函数将套接字与一个地址和端口号绑定。
  3. 使用 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()Verwenden Sie die Funktion bind(), um den Socket an eine Adresse und Portnummer zu binden.
Verwenden Sie die Funktion listen(), um den Socket in den Überwachungszustand zu versetzen.

#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;
}
Serverseitige Sockets verwalten

Sobald der Socket eingerichtet ist, kann er zur Kommunikation mit dem Client verwendet werden. Hier sind die wichtigsten Möglichkeiten, serverseitige Sockets zu verwalten: 🎜
    🎜🎜Verwenden Sie die Funktion accept(), um Verbindungen vom Client zu akzeptieren. 🎜🎜🎜🎜Verwenden Sie die Funktionen send() und recv() zum Senden und Empfangen von Daten. 🎜🎜🎜🎜Verwenden Sie die Funktion close(), um den Socket zu schließen. 🎜🎜🎜🎜🎜Praktischer Fall: TCP-Server🎜🎜🎜Das Folgende ist ein einfaches C++-TCP-Serverbeispiel, das zeigt, wie serverseitige Sockets eingerichtet und verwaltet werden: 🎜rrreee

Das obige ist der detaillierte Inhalt vonWie erstellen und verwalten C++-Funktionen serverseitige Sockets in der Netzwerkprogrammierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn