如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信 - Go语言中文社区

如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信


如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信

 

最近一段时间,由于项目的需要,接触到了Protobuf这个东东,在Linux环境下,体验了一把,感觉挺不错,很方便,且高效。是一个非常值得学习掌握和应用的数据抽象、平台无关、功能强大、(此处省略1000字)的开源工具。

Google虽然把Protobuf做成了跨平台、跨语言,但作为微软的死对头,它在readme.txt文件的第一句话就表明了态度:为了考虑部分MSVC的用户,Protobuf提供了针对VS的安装说明,但Protobuf最好用于Unix环境下。

在上一篇博客中,我介绍了如何在Linux环境下安装Protobuf,现在让我们了解一下Windows环境下,如何在VS中使用Protobuf,注意是VS,在VC6的环境下,我搞弄了一个晚上都没成功,所以推荐VS2005或者以上版本:

 

1.下载protobuff,我下的是2.3.0版本

最新的protobuf可以到Google Code上下载:http://code.google.com/p/protobuf/downloads/list

当前版本为2.3.0,下载两个压缩包:protoc-2.3.0-win32.zipprotobuf-2.3.0.zip,前者是protobuf的编译器,后者包含了有三程序语言的开发包。

 

2.解压

首先解压protoc-2.3.0-win32.zip,把protoc.exe文件放到path路径中,最简单的做法就是把这个文件拷贝到C:/WINDOWS目录下。

解压protobuf-2.3.0.zip文件,将文件加压到C盘根目录,主文件位于C:/protobuf-2.3.0/protobuf-2.3.0目录下。

 

3.安装操作

1使用VS2005编译protoVS工程目录位于vsprojects目录中,工程名字为protobuf.sln

 

2)选择“生成”à“生成解决方案”选项进行编译,编译过程中可能会由于编译的顺序报错误,可以使用手工逐个顺序编译生成,可能会比较顺利。按照下图的顺序,右键“重新生成”,逐个编译。但是我在实习操作过程中,libprotobuf-lite工程重来都没有成功编译通过过。淡定先,这个不会影响大局的。

 


3)编译完成会在目录vsprojects下的Debug目录中生成libexe文件。

生成清单如下:

exe文件:

2010-04-15  09:51         950,272 lite-test.exe

2010-04-15  09:50         3,219,456 protoc.exe

2010-04-15  09:48         9,228,288 tests.exe

2010-04-15  09:56         2,519,040 test_plugin.exe

 

lib文件:

2010-04-15  09:50        2,685,922 libprotobuf-lite.lib

2010-04-15  09:56        24,100,794 libprotobuf.lib

2010-04-15  09:56        17,302,068 libprotoc.lib

其实我在测试过程中,lite-test.exelibprotobuf-lite.lib并没有生成,因为编译错误了,但这并不影响大局,淡定先。

 

4OK,至此,我们已经完成了编译工作,下面需要进行的是protobuf的测试。我们需要使用到之前VS编译出来的libprotobuf.liblibprotoc.lib完成一个C/S结构的SOCKET通信测试。

 

àProtobuf的测试

VS2005下,创建两个新的工程,分别命名为serverclient,每个工程都需要引用protobuf的头文件和lib文件。

一、添加protobuf头文件操作:右击项目à属性à配置属性àC/C++à常规 (也命令行可在中添加)。具体路径:C:/protobuf-2.3.0/protobuf-2.3.0/src

二、添加protobuflib文件操作:右击项目à属性à配置属性à链接器à常规(也可在命令行中添加)。具体路径:C:/protobuf-2.3.0/protobuf-2.3.0/vsprojects/Debug

三、CMD窗口下编译生成头文件:

C:/protobuf-2.3.0/protobuf-2.3.0/examples>protoc -I=./ --cpp_out=./ people.proto

proto文件生成的文件放到当前目录。

我们得到了两个文件生:people.pb.hpeople.pb.cc

 

people.proto文件内容如下:

 

 

四、serverclient端源代码:

server端源代码:

client源代码:

 

五、因为上述两个代码用到了我写了一个初级版本的SOCKET跨平台的库,这里贴出来,很龊,但还可以用,小弟也才开始写socket程序。这个库文件要放到common/目录下面。

op_socket.h源代码:

 

op_socket.cpp源文件代码:

 

六、完成了上述的操作之后,就可以分别对clientserver端进行编译了,先启动server端服务器,然后用命令行的形式运行client端,就可以成功了吧。哈哈!我们来看一下使用protobuf进行socket通信的实际效果!给大家截个图!

 

 

 

最近项目紧,没空时间来好好写博客,只能粗略记录一下,等实习结束后,要把这段时间的所学所感好好总结下来。

顺便说一下,op_socket这个SOCKET是跨平台的,写个makefile可以直接在UNIX环境下运行的,咳咳,写的太龊了大家见笑了。。。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/MONKEY_D_MENG/article/details/5894910
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 20:40:30
  • 阅读 ( 1698 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢