当前位置: 首页 > news >正文

wordpress企业站被黑小程序开发需要的技术

wordpress企业站被黑,小程序开发需要的技术,怎么样管理网站,中国住房城乡建设部官方网站使用C11的std::future和std::promise实现异步网络通信 在现代C编程中#xff0c;异步编程是一个重要的主题。C11引入了std::future和std::promise#xff0c;为异步编程提供了强大的工具。本文将详细介绍如何使用std::future和std::promise实现异步网络通信#xff0c;并提…使用C11的std::future和std::promise实现异步网络通信 在现代C编程中异步编程是一个重要的主题。C11引入了std::future和std::promise为异步编程提供了强大的工具。本文将详细介绍如何使用std::future和std::promise实现异步网络通信并提供丰富的示例代码。 什么是std::future和std::promise std::future和std::promise是C11标准库中的两个类用于实现异步操作 std::promise用于设置一个值或异常该值或异常可以在另一个线程中被获取。std::future用于获取由std::promise设置的值或异常。 通过std::promise和std::future我们可以在一个线程中启动一个异步操作并在另一个线程中等待其完成。 实现异步网络通信的步骤 创建Socket使用socket函数创建一个Socket。连接服务器使用connect函数连接到服务器。发送和接收消息使用send和recv函数进行消息传递。使用std::promise和std::future在异步操作中使用std::promise和std::future来实现异步通信。 示例代码 以下是实现一个简单的异步TCP客户端的完整代码示例 #include iostream #include cstring #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include unistd.h #include futureconst int PORT 8080; const int BUFFER_SIZE 1024;std::string async_send_receive(const std::string server_ip, const std::string message) {// 创建Socketint client_socket socket(AF_INET, SOCK_STREAM, 0);if (client_socket -1) {throw std::runtime_error(Failed to create socket);}// 服务器地址sockaddr_in server_addr;std::memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(PORT);inet_pton(AF_INET, server_ip.c_str(), server_addr.sin_addr);// 连接服务器if (connect(client_socket, (sockaddr*)server_addr, sizeof(server_addr)) -1) {close(client_socket);throw std::runtime_error(Failed to connect to server);}// 发送消息send(client_socket, message.c_str(), message.size(), 0);// 接收响应char buffer[BUFFER_SIZE];std::memset(buffer, 0, BUFFER_SIZE);int bytes_received recv(client_socket, buffer, BUFFER_SIZE, 0);if (bytes_received 0) {close(client_socket);throw std::runtime_error(Failed to receive response);}// 关闭连接close(client_socket);return std::string(buffer, bytes_received); }int main() {std::string server_ip 127.0.0.1;std::string message Hello, Server!;// 创建promise和futurestd::promisestd::string promise;std::futurestd::string future promise.get_future();// 启动异步任务std::thread([promise, server_ip, message]() {try {std::string response async_send_receive(server_ip, message);promise.set_value(response);} catch (const std::exception e) {promise.set_exception(std::current_exception());}}).detach();// 等待并获取结果try {std::string response future.get();std::cout Received response: response std::endl;} catch (const std::exception e) {std::cerr Error: e.what() std::endl;}return 0; }代码解析 创建Socket int client_socket socket(AF_INET, SOCK_STREAM, 0); if (client_socket -1) {throw std::runtime_error(Failed to create socket); }这行代码创建了一个TCP Socket。AF_INET表示使用IPv4地址SOCK_STREAM表示使用TCP协议。 连接服务器 sockaddr_in server_addr; std::memset(server_addr, 0, sizeof(server_addr)); server_addr.sin_family AF_INET; server_addr.sin_port htons(PORT); inet_pton(AF_INET, server_ip.c_str(), server_addr.sin_addr);if (connect(client_socket, (sockaddr*)server_addr, sizeof(server_addr)) -1) {close(client_socket);throw std::runtime_error(Failed to connect to server); }这段代码将客户端连接到指定的服务器地址和端口。 发送和接收消息 send(client_socket, message.c_str(), message.size(), 0);char buffer[BUFFER_SIZE]; std::memset(buffer, 0, BUFFER_SIZE); int bytes_received recv(client_socket, buffer, BUFFER_SIZE, 0); if (bytes_received 0) {close(client_socket);throw std::runtime_error(Failed to receive response); }close(client_socket);return std::string(buffer, bytes_received);这段代码发送消息给服务器然后等待接收服务器的响应。接收到响应后关闭连接并返回响应内容。 使用std::promise和std::future std::promisestd::string promise; std::futurestd::string future promise.get_future();std::thread([promise, server_ip, message]() {try {std::string response async_send_receive(server_ip, message);promise.set_value(response);} catch (const std::exception e) {promise.set_exception(std::current_exception());} }).detach();try {std::string response future.get();std::cout Received response: response std::endl; } catch (const std::exception e) {std::cerr Error: e.what() std::endl; }这段代码创建了一个std::promise对象并通过get_future方法获取对应的std::future对象。然后启动一个新线程在新线程中执行异步任务并将结果设置到std::promise中。主线程等待std::future获取结果并处理异常。 进一步优化 虽然上述代码实现了一个基本的异步TCP客户端但在实际应用中我们可能需要进一步优化和扩展功能 错误处理添加更多的错误处理逻辑处理各种可能的网络错误。超时机制实现超时机制避免异步操作无限期等待。多线程处理使用线程池或异步I/O来提高并发性能。数据序列化使用数据序列化技术如JSON或Protobuf来传输复杂的数据结构。 超时机制示例 以下是一个实现超时机制的示例 #include iostream #include cstring #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include unistd.h #include future #include chronoconst int PORT 8080; const int BUFFER_SIZE 1024;std::string async_send_receive(const std::string server_ip, const std::string message) {// 创建Socketint client_socket socket(AF_INET, SOCK_STREAM, 0);if (client_socket -1) {throw std::runtime_error(Failed to create socket);}// 服务器地址sockaddr_in server_addr;std::memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(PORT);inet_pton(AF_INET, server_ip.c_str(), server_addr.sin_addr);// 连接服务器if (connect(client_socket, (sockaddr*)server_addr, sizeof(server_addr)) -1) {close(client_socket);throw std::runtime_error(Failed to connect to server);}// 发送消息send(client_socket, message.c_str(), message.size(), 0);// 接收响应char buffer[BUFFER_SIZE];std::memset(buffer, 0, BUFFER_SIZE);int bytes_received recv(client_socket, buffer, BUFFER_SIZE, 0);if (bytes_received 0) {close(client_socket);throw std::runtime_error(Failed to receive response);}// 关闭连接close(client_socket);return std::string(buffer, bytes_received); }int main() {std::string server_ip 127.好的我们继续。#### 超时机制示例续以下是一个实现超时机制的完整示例cpp #include iostream #include cstring #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include unistd.h #include future #include chronoconst int PORT 8080; const int BUFFER_SIZE 1024;std::string async_send_receive(const std::string server_ip, const std::string message) {// 创建Socketint client_socket socket(AF_INET, SOCK_STREAM, 0);if (client_socket -1) {throw std::runtime_error(Failed to create socket);}// 服务器地址sockaddr_in server_addr;std::memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(PORT);inet_pton(AF_INET, server_ip.c_str(), server_addr.sin_addr);// 连接服务器if (connect(client_socket, (sockaddr*)server_addr, sizeof(server_addr)) -1) {close(client_socket);throw std::runtime_error(Failed to connect to server);}// 发送消息send(client_socket, message.c_str(), message.size(), 0);// 接收响应char buffer[BUFFER_SIZE];std::memset(buffer, 0, BUFFER_SIZE);int bytes_received recv(client_socket, buffer, BUFFER_SIZE, 0);if (bytes_received 0) {close(client_socket);throw std::runtime_error(Failed to receive response);}// 关闭连接close(client_socket);return std::string(buffer, bytes_received); }int main() {std::string server_ip 127.0.0.1;std::string message Hello, Server!;// 创建promise和futurestd::promisestd::string promise;std::futurestd::string future promise.get_future();// 启动异步任务std::thread([promise, server_ip, message]() {try {std::string response async_send_receive(server_ip, message);promise.set_value(response);} catch (const std::exception e) {promise.set_exception(std::current_exception());}}).detach();// 等待并获取结果设置超时时间为5秒if (future.wait_for(std::chrono::seconds(5)) std::future_status::ready) {try {std::string response future.get();std::cout Received response: response std::endl;} catch (const std::exception e) {std::cerr Error: e.what() std::endl;}} else {std::cerr Request timed out std::endl;}return 0; }在这个示例中我们使用std::future::wait_for方法设置了一个超时时间为5秒。如果在5秒内没有收到响应程序将输出“Request timed out”。 总结 通过本文我们详细介绍了如何使用C11的std::future和std::promise实现异步网络通信。我们探讨了std::future和std::promise的基本概念、实现异步TCP客户端的具体步骤和代码并展示了如何实现超时机制。 理解和掌握这些技术可以帮助你在异步编程和网络编程领域取得更大的进步。希望这篇文章能帮助你更好地理解和应用std::future和std::promise。如果你有任何问题或需要进一步的帮助请随时联系我。Happy coding!
http://www.sczhlp.com/news/182261/

相关文章:

  • 福田做商城网站建设哪家便宜wordpress字体加载
  • 网站建设软著wordpress服务器搭建
  • 注册c模块到lua中使用
  • DNA权威书籍
  • 220V转5V500mA非隔离电源芯片WT5105
  • linux基础-find查找
  • 门户网站是什么意思?做网站为什么需要购买域名
  • 遵义原创网站东莞建设工程交易中心官网
  • 免费做期中考试的网站网站集约化建设的问题
  • 技术支持:上海网站建设怎么做整人的网站
  • 名创 网站建设商标注册网站官网
  • 视频解析网站建设如何在自己建设的网站上发表文章
  • 做网站用方正字体可以额的网站建设案例行情
  • 苏州h5模板建站公司管理流程
  • 荷城网站制作1m带宽做网站怎么样
  • 做低价的跨境电商网站东莞东城招聘网最新招聘
  • c2c电子商务网站建设栏目结构图北京建站优化
  • 怎么获取免费的网站域名一条龙网站
  • 网站建设罗贤伟wordpress表情包
  • 免费做初中试卷的网站justnews主题wordpress
  • 有域名有服务器怎么建站网站建设银行业务预约纪念币猪年纪念币预约
  • 攸米知识付费小程序管理系统:一站式知识变现解决方案
  • citus设置密码
  • 实践与认识及其发展规律
  • 2025 年最新推荐氨糖厂家排行榜:四期临床验证 + 蓝帽认证,帮你选出优质氨糖软骨素 / 氨糖钙 / 氨糖钙片厂家
  • 个人网站备案备注写什么营销案例100例小故事及感悟
  • 淘宝上做网站行吗seo网站建设优化什么意思
  • 网站框架搭建途牛的旅游网站是谁做的
  • 大连建设网站哪家好网站建设服务有哪些内容
  • 国内什么网站用asp.net域名com和cn的区别