AI搜索

发需求

  • 发布软件需求
  • 发布代理需求

C++网络编程:构建基于socket的通信协议

   2025-05-21 11
导读

在C++中,我们可以使用socket编程来实现网络通信。以下是一个简单的基于socket的通信协议实现。

在C++中,我们可以使用socket编程来实现网络通信。以下是一个简单的基于socket的通信协议实现:

首先,我们需要创建一个服务器端程序,用于接收客户端的连接请求。服务器端程序的主要任务是监听客户端的连接请求,当有连接请求时,接受连接并发送一条消息给客户端。

```cpp

#include

#include

#include

#include

int main() {

int sockfd;

struct sockaddr_in serverAddr;

char buffer[1024];

int n;

// 创建套接字

if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {

std::cerr << "Socket creation error" << std::endl;

return -1;

}

// 设置服务器地址

serverAddr.sin_family = AF_INET;

serverAddr.sin_port = htons(8080); // 设置端口号为8080

serverAddr.sin_addr.s_addr = INADDR_ANY; // 设置服务器IP地址为0.0.0.0

// 绑定套接字

if( bind(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {

std::cerr << "Bind error" << std::endl;

return -1;

}

// 监听套接字

if( listen(sockfd, 5) < 0) {

std::cerr << "Listen error" << std::endl;

return -1;

}

std::cout << "Server is listening..." << std::endl;

// 接受客户端连接

socklen_t len = sizeof(serverAddr);

n = accept(sockfd, (struct sockaddr*)&serverAddr, &len);

if( n < 0 ) {

std::cerr << "Accept error" << std::endl;

return -1;

}

// 读取客户端发送的消息

bzero(buffer, sizeof(buffer));

n = read(sockfd, buffer, sizeof(buffer)-1);

if( n < 0 ) {

std::cerr << "Read error" << std::endl;

return -1;

}

std::cout << "Received message: " << buffer << std::endl;

// 关闭套接字

close(sockfd);

C++网络编程:构建基于socket的通信协议

return 0;

}

```

接下来,我们创建一个客户端程序,用于向服务器发送消息并接收服务器的响应。客户端程序的主要任务是连接到服务器,发送消息,接收服务器的响应,然后关闭连接。

```cpp

#include

#include

#include

#include

#include

int main() {

int sockfd;

struct sockaddr_in serverAddr;

char buffer[1024];

int n;

// 创建套接字

if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {

std::cerr << "Socket creation error" << std::endl;

return -1;

}

// 设置服务器地址

serverAddr.sin_family = AF_INET;

serverAddr.sin_port = htons(8080); // 设置端口号为8080

serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 设置服务器IP地址为本地IP地址

// 连接到服务器

if( connect(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {

std::cerr << "Connect error" << std::endl;

return -1;

}

// 发送消息到服务器

bzero(buffer, sizeof(buffer));

snprintf(buffer, sizeof(buffer), "Hello, %s!", serverAddr.sin_addr.s_addr);

if( send(sockfd, buffer, strlen(buffer), 0) < 0) {

std::cerr << "Send error" << std::endl;

return -1;

}

// 接收服务器的响应

bzero(buffer, sizeof(buffer));

n = recv(sockfd, buffer, sizeof(buffer)-1, 0);

if( n < 0 ) {

std::cerr << "Recv error" << std::endl;

return -1;

}

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

// 关闭套接字

close(sockfd);

return 0;

}

```

以上代码实现了一个简单的基于socket的通信协议,服务器端程序监听8080端口,客户端程序连接到服务器并发送一条消息“Hello, 127.0.0.1!”,服务器端程序接收到消息后返回“Received message: Hello, 127.0.0.1!”。

 
举报收藏 0
免责声明
• 
本文内容部分来源于网络,版权归原作者所有,经本平台整理和编辑,仅供交流、学习和参考,不做商用。转载请联系授权,并注明原文出处:https://www.itangsoft.com/baike/show-1506886.html。 如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除。涉及到版权或其他问题,请及时联系我们处理。
 
 
更多>热门产品
蓝凌MK 蓝凌MK

119条点评 4.5星

办公自动化

帆软FineBI 帆软FineBI

93条点评 4.5星

商业智能软件

简道云 简道云

85条点评 4.5星

低代码开发平台

纷享销客CRM 纷享销客CRM

0条点评 4.5星

客户管理系统

悟空CRM 悟空CRM

107条点评 4.5星

客户管理系统

钉钉 钉钉

103条点评 4.6星

办公自动化

金蝶云星空 金蝶云星空

0条点评 4.4星

ERP管理系统

蓝凌EKP 蓝凌EKP

0条点评 4.5星

办公自动化

用友YonBIP 用友YonBIP

97条点评 4.5星

ERP管理系统

致远互联A8 致远互联A8

0条点评 4.6星

办公自动化

 
 
更多>同类知识
推荐产品 更多>
唯智TMS
  • 唯智TMS

    105条点评 4.6星

    物流配送系统

蓝凌MK
  • 蓝凌MK

    119条点评 4.5星

    办公自动化

简道云
  • 简道云

    85条点评 4.5星

    低代码开发平台

纷享销客CRM
蓝凌低代码 帆软FineBI
 
最新知识
 
 
点击排行
 

入驻

企业入驻成功 可尊享多重特权

入驻热线:177-1642-7519

企业微信客服

客服

客服热线:177-1642-7519

小程序

小程序更便捷的查找产品

为您提供专业帮买咨询服务

请用微信扫码

公众号

微信公众号,收获商机

微信扫码关注

顶部