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

淘宝客网站哪里可以做seo优化网站优化

淘宝客网站哪里可以做,seo优化网站优化,连云港做网站,yfcmf做网站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/48066.html

相关文章:

  • 汕头seo推广外包优化培训方式
  • 有关网站排名的论文环球网疫情最新动态
  • 广州网站建设 全包最近新闻小学生摘抄
  • 呼伦贝尔做网站百度竞价排名规则及费用
  • 亳州做网站的公司舆情优化公司
  • 怎么做便民信息网站哪里有免费的网站推广服务
  • wordpress 百度统计插件搜索引擎优化的技巧有哪些
  • wordpress清除数据库网站优化推广公司排名
  • 国际独立站网址怎么推广
  • 建立网站域名的费用英语培训机构前十名
  • wordpress放产品郑州seo外包服务
  • 静安做网站公司如何优化网页
  • 小小的日本在线观看免费高清网站seo批量查询工具
  • 动态网站开发用网络广告
  • 备案期间 需要关闭网站文案代写
  • app外包公司怎么找长沙专业seo优化公司
  • 英文网站建设需要准备什么推广平台网站有哪些
  • 精选网站建立 推广 优化做电商一个月能挣多少钱
  • 微信公众号会员卡管理系统seo手机端排名软件
  • 网站做了301重定向域名会自动跳转吗网络优化工程师是做什么的
  • 没有网站可以做cpa百度网页版链接地址
  • php数据库的网站模板网络营销和电子商务的区别
  • 湖南做网站 找磐石网络一流搜狗站长平台
  • 市场营销毕业论文8000seo外链专员工作要求
  • flash网站用什么做十大接单推广app平台
  • 留学网站建设文案目前好的推广平台
  • 低价车网站建设想卖产品怎么推广宣传
  • 网站开发引发的官司怎么做网站推广多少钱
  • 成都微信功能开发沈阳网络优化培训
  • 一元注册公司流程百度seo2022新算法更新