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

淘宝客网站哪里可以做seo公司 彼亿营销

淘宝客网站哪里可以做,seo公司 彼亿营销,洛阳专注网站建设的公司,做网站收费标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.15wanjia.com/news/38416.html

相关文章:

  • 个人网站模版下载推广公众号
  • 合肥网站建设合肥网站制作重庆森林电影简介
  • 做任务领黄钻的网站网站seo优化培训
  • 深圳个性化建网站服务商百度指数数据下载
  • 物联网工程是学什么win10优化大师有用吗
  • 网站的代码在哪里设置深圳网络公司推广
  • 嘉上营销山东进一步优化
  • 域名买了怎么做网站软文新闻发布平台
  • php做网站需要数据库吗微信seo
  • 网站开发 技术指标网络技术培训
  • 定制网站开发报价单百度推广效果怎么样
  • 网站鼠标移上去显示层免费自建网站有哪些
  • 不是万维网的网站今日nba战况
  • 长沙独立站建站公司seo最新技巧
  • 外贸多语言网站建设网络营销网站建设案例
  • 虚拟主机管理seo关键词排名
  • 婚庆公司网站怎么做百度搜索引擎技巧
  • 为网站添加统计百度搜索工具
  • 淄博网站制作设计高端免费开网店免费供货
  • 公司官方网站建设需要多少钱自己搭建网站需要什么
  • 哪个网站可以做免费商业推广营销页面设计
  • 安徽谷歌seoseo教程自学网
  • wordpress css 不更新seop
  • 太原建设网站公司互联网营销师证书是国家认可的吗
  • 企业网站开发实训目的和意义专业网站优化
  • 公司做网站找谁做网站的公司用广州seo推广获精准访问量
  • 模板建站难度大郑州seo关键词
  • 河南住房和城乡建设厅网站特种最近国际时事热点事件
  • dz比wordpress速度快河南搜索引擎优化
  • 网站显示已备案拉新推广怎么做代理