以socket连接方式向memcached存储数据
来源:互联网 发布:最近淘宝生意很差2017 编辑:程序博客网 时间:2024/05/04 19:26
思路很简单,绑定memcached的ip和portt,然后按照协议发送数据即可。但是里面的细节需要谨慎
#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <syslog.h>#include <errno.h>#include <stdlib.h>#define MAX_LISTEN_NUM 5#define SEND_BUF_SIZE 4096*8#define RECV_BUF_SIZE 1000#define SERVER_PORT 11211#define IP "192.168.40.29" char recvbuf[RECV_BUF_SIZE] = {0}; char sendbuf[SEND_BUF_SIZE] = {0};int main(){ int sock_fd = 0; int recvlen = 0; int retlen = 0; int sendlen = 0; int leftlen = 0; char *ptr = NULL; struct sockaddr_in ser_addr; memset(&ser_addr, 0, sizeof(ser_addr)); ser_addr.sin_family = AF_INET; inet_aton("192.168.40.29", (struct in_addr *)&ser_addr.sin_addr); ser_addr.sin_port = htons(SERVER_PORT); sock_fd = socket(AF_INET, SOCK_STREAM, 0); if(sock_fd < 0) { syslog(LOG_ERR, "%s:%d, create socket failed\n", __FILE__, __LINE__); exit(1); } if(connect(sock_fd, (struct sockaddr *)&ser_addr, sizeof(ser_addr)) < 0) { syslog(LOG_ERR, "%s:%d, connect socket failed\n", __FILE__, __LINE__); exit(1); }memset(sendbuf, 0x00, sizeof(sendbuf));char *m_key = "/test.html"; // m_key = c_key;FILE *fp; fp = fopen("cmc.txt" , "r"); fseek( fp , 0 , SEEK_END ); int file_size; file_size = ftell( fp ); printf( "%d" , file_size ); char tmp[4096*4] = {0}; fseek( fp , 0 , SEEK_SET); fread( tmp , file_size , sizeof(char) , fp); printf("file:%s\n" , tmp );char *value = "HTTP/1.1 200 OK \Server: nginx/1.9.11 \Date: Wed, 02 Mar 2016 04:21:23 GMT \Content-Type: text/html \Content-Length: 353 \Last-Modified: Mon, 22 Feb 2016 21:13:48 GMT \Connection: close \Accept-Ranges: bytes \<html> \<head> \</head> \<body> \<a href=/view/1/index.html>[ONE] WEBSITE_PROJ_FIRST</a><br/><br/> \<a href=/view/2/index.html>[TWO] WEBSITE_PROJ_SECOND</a><br/><br/> \<a href=/view/3/index.html>[THR] WEBSITE_PROJ_THIRD</a><br/><br/> \<p>192.168.40.29</p> \</body> \</html>"; char *m_t_value = "test local value"; m_t_value = tmp; char valuelen[10] = {0}; sprintf(valuelen, "%d", strlen(m_t_value));int index = 0; char *set = "set "; memcpy(sendbuf+index, set, strlen(set)); // "set " index += strlen(set); memcpy(sendbuf + index, m_key, strlen(m_key)); // "set key" index += strlen(m_key); char *cmd = " 0 0 "; memcpy(sendbuf + index, cmd, strlen(cmd)); // "set key 0 0" index += strlen(cmd); memcpy(sendbuf + index, valuelen, strlen(valuelen)); // "set key 0 0 valuelen" index += strlen(valuelen); char *rn = "\r\n"; memcpy(sendbuf + index, rn, strlen(rn)); // "set key 0 0 valuelen/r/n" index += strlen(rn); memcpy(sendbuf + index, m_t_value, strlen(m_t_value)); // "set key 0 0 valuelen/r/nvalue" index += strlen(m_t_value); memcpy(sendbuf + index, rn, strlen(rn)); // "set key 0 0 valuelen/r/nvaluel/r/n" index += strlen(rn);int writelen = write(sock_fd, sendbuf, index);printf("writelen:%d writebuf:%s\n", writelen, sendbuf);char recvbuf[1024] = {0};int readlen = read(sock_fd, recvbuf, sizeof(recvbuf));printf("recvbuf:%s\n", recvbuf); close(sock_fd); }
0 0
- 以socket连接方式向memcached存储数据
- memcached实战系列(六)理解Memcached的数据存储方式
- 我的 Android 之旅(十九)---数据存储--向SD卡中以实体类的方式存取数据
- nginx以unix-domain-socket方式连接fastcgi(php)
- ASP.NET以Post方式向网页发送数据
- Android客户端向Python服务器以POST方式传输数据
- 使用javascript以post的方式向服务器提交数据
- 使用libcurl以Post方式向HTTP服务器提交数据
- 使用libcurl以Post方式向HTTP服务器提交数据
- C++ 以POST方式向网页提交数据
- [abap] smartforms句柄与以簇的方式存储数据
- smartforms句柄与以簇的方式存储数据。
- 以0x字节方式打印存储的数据
- numpy中以文本的方式存储以及读取数据
- 以UTF-8编码方式讲数据存储的编码
- java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
- Memcached(三):数据存储测试
- memcached实现分布式数据存储
- LINUX下segment产生以及调试
- JobService的使用及源码分析
- 收藏
- Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
- C#开发ftp客户端遇到550错误
- 以socket连接方式向memcached存储数据
- Hdu 2795
- 出现乱码的原因及改正
- Hadoop2.2配置详解
- V-Play 文档翻译 ListPage
- 设计模式——单例模式
- 深入研究java.lang.ThreadLocal类
- 紫书 p120 第五章例题5-7 丑数
- 深入理解Android之AOP