thrift编写服务器/客户端实现图片传输(c++)
2017-08-29 20:03
651 查看
本文主要实现 在linux环境下thrift编写服务器/客户端实现图片传输(c++)
命令行 通过thrift生成 cpp文件
生成 gen-cpp文件下包括:
将thrift生成的服务器修改成自己的服务器
修改server.cpp,只要修改SendPhoto()函数
编写client.cpp
编写Makefile
代码块
thrift/send_photo.thriftservice Photo { bool SendPhoto(1: binary write_buffer, 2: i32 buffer_size) }
命令行 通过thrift生成 cpp文件
# thrift -r --gen cpp send_photo.thrift
生成 gen-cpp文件下包括:
send_photo_constants.cpp send_photo_constants.h send_photo_types.cpp send_photo_types.h Photo.cpp Photo.h Photo_server.skeleton.cpp
将thrift生成的服务器修改成自己的服务器
# mv Photo_server.skeleton.cpp server.cpp
修改server.cpp,只要修改SendPhoto()函数
bool SendPhoto(const std::string& write_buffer, const int32_t buffer_size) { // Your implementation goes here printf("SendPhoto\n"); FILE * f = fopen("server.jpg","wb+"); if(f){ fwrite(write_buffer.c_str(),1,buffer_size,f); fclose(f); for(unsigned int i = 0; i < 30;i++) { printf("%02X ",(unsigned char)write_buffer[i]); if (i%16 == 15) { printf("\n"); } } fseek(f,0,SEEK_END); int size1 = ftell(f); cout << endl << size1 <<endl; return true; }
编写client.cpp
#include "Photo.h" #include <transport/TSocket.h> #include <transport/TBufferTransports.h> #include <protocol/TBinaryProtocol.h> #include <iostream> #include <fstream> #include <string.h> using namespace std; using namespace apache::thrift; using namespace apache::thrift::protocol; using namespace apache::thrift::transport; using boost::shared_ptr; int main(int argc, char **argv){ boost::shared_ptr<TSocket> socket(new TSocket("localhost",9090)); boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket)); boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport)); transport->open(); PhotoClient client(protocol); char* photo = new char[20]; cout << "input the photo:" << endl; photo = (char*)malloc(sizeof(char)*20); scanf("%s",photo); FILE * f = fopen(photo,"rb"); fseek(f,0,SEEK_END); int size = ftell(f); char * buf = new char[size]; memset(buf,0,size); fseek(f,0,SEEK_SET); int nRead=fread(buf,sizeof(char),size,f); bool isRight = client.SendPhoto(string(buf,size),size); cout << isRight << endl; transport->close(); return 0; }
编写Makefile
BOOST_DIR = /usr/local/boost/include/boost/ THRIFT_DIR = /usr/local/include/thrift LIB_DIR = /usr/local/lib GEN_SRC = captcha_constants.cpp captcha_types.cpp Photo.cpp default: server client server: server.cpp g++ -DHAVE_NETINET_IN_H -o server -I${THRIFT_DIR} -I${BOOST_DIR} -I../gen-cpp -L${LIB_DIR} -lthrift server.cpp ${GEN_SRC} client: client.cpp g++ -DHAVE_NETINET_IN_H -o client -I${THRIFT_DIR} -I${BOOST_DIR} -I../gen-cpp -L${LIB_DIR} -lthrift client.cpp ${GEN_SRC} clean: $(RM) -r client server
相关文章推荐
- c++服务器与android客户端进行文件传输功能的实现
- c++服务器与android客户端进行文件传输功能的实现
- 使用python中的socket实现服务器和客户端,并完成图片的传输。
- Qt实现服务器与客户端传输文字和图片(Qt②)
- 用thrift实现客户端和服务端的C++代码 - 金美光的小屋 - 博客频道 - CSDN.NET
- java做服务器,android做客户端,实现数据传输
- thrift C++服务器/客户端开发
- 用thrift实现客户端和服务端的C++代码
- android客户端和服务器实现传图片和文件
- 学习Java Web开发【2】可传输图片的服务器的代码编写
- Python 网络编程---简单的服务器与客户端实现---阻塞式编写
- Thrift安装与服务器、客户端的编写运行演示
- 服务器与客户端之间的远程图片传输
- 【Chat】实验 -- 实现 C/C++下TCP, 服务器/客户端 "多人聊天室"
- NVelocity入门,为服务器与客户端传输xml数据,实现Ajax通信铺平道路
- C++中用Socket实现对结构体、长字符串和图片的传输
- ASP.NET 中使用隐藏域实现客户端和服务器传输大量信息
- [原创]使用RMI编写客户端-服务器应用程序,实现分布式计算
- thrift下C++服务器和客户端开发
- 【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯