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

淘宝客网站哪里可以做餐饮品牌全案策划

淘宝客网站哪里可以做,餐饮品牌全案策划,温州市网站,搭建wordpress网站Protocol Buffers(protobuf)是一种由Google开发的用于序列化结构化数据的方法,通常用于在不同应用程序之间进行数据交换或存储数据。它是一种语言无关、平台无关、可扩展的机制,可以用于各种编程语言和环境中。 1、首先建立proto文…

Protocol Buffers(protobuf)是一种由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) {cerr<<"Error opening socket"<<endl;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) {cerr<<"Error on binding"<<endl;return 1;}if (listen(server_fd, 5) < 0) {cerr<<"Error on listen"<<endl;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) {cerr<<"Error on accept"<<endl;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;cout<<"please enter id:";int id;cin>>id;cout<<"please enter content:";string content;cin>>content;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.yidumall.com/news/46596.html

相关文章:

  • 龙华做棋牌网站建设哪家好小程序开发平台官网
  • 宜宾网站建设88sou电子商务营销模式有哪些
  • 襄阳做淘宝网站推广新网站怎么做优化
  • 2018年淘宝客网站怎么做深圳搜索引擎优化推广便宜
  • 上海网站搭建公司哪家好预测2025年网络营销的发展
  • 橙子建站是哪家公司手机制作网站app
  • 前端开发线上培训百度首页排名优化服务
  • 做公务员试题的网站重庆森林讲了什么故事
  • 本地工程招标网seo产品优化免费软件
  • 自做视频网站赚钱吗网址怎么申请注册
  • 代做外国空间网站站长工具seo优化建议
  • 自学网站建设最快要多久怎么引流推广
  • 网站建设后续需要维护sem账户托管
  • 免费做封面的网站公司网站模板设计
  • 西宁专业做网站公司百度搜索引擎优化指南最新版
  • 南京市建设工程交易中心网站网址seo分析
  • 主要b2b网站西安搜建站科技网站
  • 学校网站建设的必要性免费seo教程资源
  • 网站管理是做什么的seo搜索引擎优化方案
  • 青海网站建设哪家好做百度线上推广
  • 网页模板psd素材哈尔滨优化网站公司
  • 百度付费问答平台seo查询 站长之家
  • 暴风seo论坛网站制作优化排名
  • 深圳市住房城乡建设局网站首页济宁seo公司
  • 怎么做自己的彩票网站网络营销的八大职能
  • 网络加速器有哪些网站优化培训学校
  • 济南做网站优化的公司百度客服系统
  • 迪庆企业网站建设公司学前端去哪个培训机构
  • 郫县网站建设企业网站制作需要多少钱
  • 房产网站设计模板如何去除痘痘效果好