ホームページ > バックエンド開発 > C++ > ネットワーク プログラミングで C++ 関数はどのようにネットワーク接続を確立したり閉じたりするのでしょうか?

ネットワーク プログラミングで C++ 関数はどのようにネットワーク接続を確立したり閉じたりするのでしょうか?

王林
リリース: 2024-04-26 17:48:01
オリジナル
1078 人が閲覧しました

C ネットワーク プログラミングでは、ネットワーク接続の確立には次の関数が含まれます。socket(): ソケットを作成します。 connect(): ソケットをリモート ホストおよびポートに接続します。ネットワーク接続を閉じるには、close() 関数を使用する必要があります。

C++ 函数在网络编程中如何建立和关闭网络连接?

#C 関数は、ネットワーク プログラミングにおける接続の確立と終了を行う

ネットワーク プログラミングでは、ネットワーク接続の確立と終了は非常に重要です。 C には、これらの操作を処理するための関数がいくつか用意されています。

ネットワーク接続の確立

  • socket(): ネットワーク通信用のソケットを作成します。
  • connect(): ソケットをリモート ホストおよびポートに接続します。

コード例: TCP 接続の確立

#include <sys/socket.h>
#include <netinet/in.h>

int main() {
  // 创建套接字
  int socket_fd = socket(AF_INET, SOCK_STREAM, 0);

  // 设置服务器地址信息
  struct sockaddr_in server_addr;
  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(8080);
  server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

  // 连接到服务器
  connect(socket_fd, (struct sockaddr *) &server_addr, sizeof(server_addr));
  
  // ... 继续执行其他操作 ...
}
ログイン後にコピー

ネットワーク接続を閉じる

  • close (): ソケットを閉じます。

コード例: TCP 接続を閉じる

#include <sys/socket.h>

int main() {
  // ... 获取已连接的套接字 fd ...

  // 关闭套接字
  close(socket_fd);
}
ログイン後にコピー

実践的なケース

上記の関数を使用すると、簡単に次のことができます。 C のネットワーク プログラミングで接続の確立と切断を実装します。たとえば、単純な TCP クライアントとサーバーを作成して、これらの機能が何を行うかを示します。

クライアント コード:

#include <sys/socket.h>
#include <netinet/in.h>
#include <iostream>

int main() {
  // 创建套接字并连接到服务器
  int socket_fd = socket(AF_INET, SOCK_STREAM, 0);
  struct sockaddr_in server_addr;
  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(8080);
  server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  connect(socket_fd, (struct sockaddr *) &server_addr, sizeof(server_addr));

  // 发送数据到服务器
  std::string msg = "Hello from client!";
  send(socket_fd, msg.c_str(), msg.size(), 0);

  // 关闭连接
  close(socket_fd);

  return 0;
}
ログイン後にコピー

サーバー コード:

#include <sys/socket.h>
#include <netinet/in.h>
#include <iostream>

int main() {
  // 创建套接字并绑定到端口
  int socket_fd = socket(AF_INET, SOCK_STREAM, 0);
  struct sockaddr_in server_addr;
  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(8080);
  server_addr.sin_addr.s_addr = INADDR_ANY;
  bind(socket_fd, (struct sockaddr *) &server_addr, sizeof(server_addr));

  // 监听连接
  listen(socket_fd, 5);

  // 接受连接
  int client_socket_fd = accept(socket_fd, NULL, NULL);

  // 从客户端接收数据
  char buffer[256];
  recv(client_socket_fd, buffer, sizeof(buffer), 0);
  std::cout << "Received from client: " << buffer << std::endl;

  // 发送响应到客户端
  std::string msg = "Hello from server!";
  send(client_socket_fd, msg.c_str(), msg.size(), 0);

  // 关闭连接
  close(client_socket_fd);
  close(socket_fd);

  return 0;
}
ログイン後にコピー

以上がネットワーク プログラミングで C++ 関数はどのようにネットワーク接続を確立したり閉じたりするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート