21xrx.com
2024-12-28 12:19:40 Saturday
登录
文章检索 我的文章 写文章
C++编写Socket程序
2023-07-05 13:51:43 深夜i     --     --
C++ Socket 编写程序 网络编程 数据通信

Socket编程是一种基于网络的应用程序设计方法,它可以通过网络传输数据、发送消息和通信。在C++语言中,可以使用socket库实现Socket编程。

C++的Socket库包含在头文件 中,其中winsock2.h是最新版本,支持更多的网络协议。

下面是一个简单的C++ Socket程序实例,用于建立TCP连接,发送数据并打印服务器响应:


#include <winsock2.h>

#include <iostream>

using namespace std;

int main() {

  WSADATA wsaData;

  SOCKET sock;

  SOCKADDR_IN addr;

  char buffer[1024] = "";

  const char* sendData = "Hello, Server!";

  // 初始化Winsock

  if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)

    cout << "Failed to initialize Winsock" << endl;

    return 1;

  

  // 创建Socket

  sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  if (sock == INVALID_SOCKET) {

    cout << "Failed to create socket" << endl;

    WSACleanup();

    return 1;

  }

  // 设置Socket地址

  addr.sin_family = AF_INET;

  addr.sin_port = htons(8888);

  addr.sin_addr.s_addr = inet_addr("127.0.0.1");

  // 连接服务器

  if (connect(sock, (SOCKADDR*)&addr, sizeof(addr)) == SOCKET_ERROR) {

    cout << "Failed to connect to server" << endl;

    closesocket(sock);

    WSACleanup();

    return 1;

  }

  // 发送数据

  send(sock, sendData, strlen(sendData), 0);

  cout << "Data sent: " << sendData << endl;

  // 接收响应

  int recvSize = recv(sock, buffer, sizeof(buffer), 0);

  if (recvSize > 0)

    cout << "Received response: " << buffer << endl;

   else

    cout << "Failed to receive response" << endl;

  

  // 关闭Socket

  closesocket(sock);

  // 清理Winsock

  WSACleanup();

  return 0;

}

该程序首先使用WSAStartup函数初始化Winsock,然后使用socket函数创建一个套接字,使用connect函数连接服务器,使用send函数发送数据,并使用recv函数接收响应。最后,使用closesocket函数关闭套接字,并使用WSACleanup函数清理Winsock。

需要注意的是,C++ Socket程序需要在Windows系统上编译,因为它使用了Windows API。同时,Socket编程是一种底层的网络编程技术,需要深入了解TCP/IP协议,了解Socket编程的原理和常用的函数调用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复