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

网站制作厦门公司网站 模板 下载

网站制作厦门公司,网站 模板 下载,完成公司网站建设,WordPress弹png图片广告Protocol Buffers#xff08;protobuf#xff09;是一种由Google开发的用于序列化结构化数据的方法#xff0c;通常用于在不同应用程序之间进行数据交换或存储数据。它是一种语言无关、平台无关、可扩展的机制#xff0c;可以用于各种编程语言和环境中。 1、首先建立proto文…Protocol Buffersprotobuf是一种由Google开发的用于序列化结构化数据的方法通常用于在不同应用程序之间进行数据交换或存储数据。它是一种语言无关、平台无关、可扩展的机制可以用于各种编程语言和环境中。 1、首先建立proto文件syntax如果不标明proto3则会默认使用proto2版本在后面的使用过程中需要加上包名以防止命名空间冲突消息体中的序号表明在序列化数据中该变量出现的顺序。如果要规定该变量只有n中可能可以使用枚举类型例如表示人的性别男女。编辑 protoc -I. --cpp_out. message.proto protobuf3文档中文译版 syntax proto3; package csj; message MyMessage { int32 id 1; string content 2; }2、编写服务端编辑 g -o server server.cpp message.pb.cc -lprotobuf #include message.pb.h // 你的protobuf生成的头文件 #include iostream #include string #include sys/socket.h #include unistd.h #include arpa/inet.h using namespace std;// 接收protobuf消息 bool ReceiveProtobufMessage(int socket_fd, csj::MyMessage* message) {std::string serialized_message;const int BUFFER_SIZE 1024; // 设置一个缓冲区大小char buffer[BUFFER_SIZE];ssize_t received recv(socket_fd, buffer, BUFFER_SIZE, 0);if (received 0) {std::cerr Failed to receive message. std::endl;return false;}serialized_message.assign(buffer, received);if (!message-ParseFromString(serialized_message)) {std::cerr Failed to parse received message. std::endl;return false;}return true; }int main() {int server_fd, client_fd;struct sockaddr_in server_addr, client_addr;socklen_t client_len;server_fd socket(AF_INET, SOCK_STREAM, 0);if (server_fd 0) {cerrError opening socketendl;return 1;}memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_addr.s_addr INADDR_ANY;server_addr.sin_port htons(12346);if (bind(server_fd, (struct sockaddr *) server_addr, sizeof(server_addr)) 0) {cerrError on bindingendl;return 1;}if (listen(server_fd, 5) 0) {cerrError on listenendl;return 1;}// std::cout Server listening on port PORT std::endl;client_len sizeof(client_addr);client_fd accept(server_fd, (struct sockaddr *) client_addr, client_len);if (client_fd 0) {cerrError on acceptendl;return 1;}// 假设socket_fd是已经建立的socket连接的文件描述符while(true){csj::MyMessage message;if (!ReceiveProtobufMessage(client_fd, message)) {std::cerr Failed to receive protobuf message. std::endl;return 1;}std::cout Received message: message.id() , message.content() std::endl;}close(client_fd);close(server_fd);return 0; } 3、编写客户端编辑 g -o client client.cpp message.pb.cc -lprotobuf #include message.pb.h // 你的protobuf生成的头文件 #include iostream #include string #include sys/socket.h #include unistd.h #include arpa/inet.h using namespace std;// 发送protobuf消息 bool SendProtobufMessage(int socket_fd, const csj::MyMessage message) {std::string serialized_message;if (!message.SerializeToString(serialized_message)) {std::cerr Failed to serialize message. std::endl;return false;}ssize_t sent send(socket_fd, serialized_message.data(), serialized_message.size(), 0);if (sent 0) {std::cerr Failed to send message. std::endl;return false;}return true; }int main() {int clientSocket;struct sockaddr_in serverAddress;// 创建套接字clientSocket socket(AF_INET, SOCK_STREAM, 0);if (clientSocket -1) {cerr Failed to create socket endl;return -1;}// 设置服务器地址和端口serverAddress.sin_family AF_INET;serverAddress.sin_addr.s_addr inet_addr(127.0.0.1);serverAddress.sin_port htons(12346);// 连接服务器if (connect(clientSocket, (struct sockaddr*)serverAddress, sizeof(serverAddress)) -1) {cerr Failed to connect to server endl;return -1;}// 假设socket_fd是已经建立的socket连接的文件描述符while(true){csj::MyMessage message;coutplease enter id:;int id;cinid;coutplease enter content:;string content;cincontent;message.set_id(id);message.set_content(content);if (!SendProtobufMessage(clientSocket, message)) {std::cerr Failed to send protobuf message. std::endl;return 1;}}close(clientSocket);return 0; }当服务端两次使用同一个端口号会出现Error on binding这是同一时间在同一端口上启动两个TCP服务器第二个服务器会收到端口已被占用的错误并且无法绑定到该端口上。这是因为操作系统会阻止多个应用程序同时绑定到相同的端口上以确保网络通信的正确性和稳定性。虽然服务端结束了但这个接口不会立马就“让”出来而是过一段时间由OS自动释放
http://www.hkea.cn/news/14489141/

相关文章:

  • 网上网站开发村级网站建站
  • 佛山做外贸网站案例百度搜索收录
  • 企业网站必须备案吗以下属于网站seo的内容是
  • 无需下载国外黄冈网站推广directadmin备份网站
  • 广州建设高端网站怎么用ps做网站首页图片尺寸
  • 室内设计网站公司建邺做网站价格
  • 个人站长怎么做企业网站什么是h5网站
  • 网站外链建设可以提升网站权重吗wordpress怎么改为中文
  • 公司网站建设沈阳广州企业网站制作公司
  • 一站式网站搭建企业网站推广哪家好
  • 公司模板网站建设福州网站搜索引擎优化
  • 厦门网站设计推广公司国外 网站设计
  • 建设广告网站费用保险公司发展规划
  • 宝安龙华积分商城网站建设佛山网站建设专家
  • 二手书店网站建设规划书wordpress 多站点 子目录
  • 网站开发期末作品代码和数据库运行好大全吃什么补肾最快最好
  • 上海做网站比较好的公司有哪些网站开发外包维护合同
  • 网站建设的几点体会清远市住房与城乡建设局的网站查
  • 学校响应式网站建设塘沽信息
  • 重庆信息网站推广广州有哪些网络设计公司
  • 重庆在百度做个网站多少钱html网站开发教程
  • 东莞建设网站开发最优惠的建设网站建设
  • 营销网站方案设计做招聘网站需要什么人员
  • 自己做的网站如何上百度外地公司做的网站能备案
  • 网站怎么做限时抢购北京最新消息今天上午
  • wordpress评论邮件插件优化人员配置
  • 河北省住房城乡建设厅网站做自媒体可以搬运国外网站新闻吗
  • 群艺馆网站建设方案wordpress下载教程
  • 建设风景区网站的目的企业网站建设比较好
  • seo建站系统南约社区网站建设