Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1069628
  • 博文数量: 252
  • 博客积分: 4561
  • 博客等级: 上校
  • 技术积分: 2833
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 08:23
文章分类

全部博文(252)

文章存档

2015年(2)

2014年(1)

2013年(1)

2012年(16)

2011年(42)

2010年(67)

2009年(87)

2008年(36)

分类: LINUX

2011-11-09 09:40:17

#include
#include
#include
#include

#include

#define err(msg) perror(msg)

static int gzip_uncompress(char *bufin, int lenin, char *bufout, int lenout)
{
        z_stream d_stream;
        int result;

        memset(bufout, '\0', sizeof(bufout));
        d_stream.zalloc = NULL;
        d_stream.zfree  = NULL;
        d_stream.opaque = NULL;

        result = inflateInit2(&d_stream, MAX_WBITS + 16);
        d_stream.next_in   = bufin;
        d_stream.avail_in  = lenin;
        d_stream.next_out  = bufout;
        d_stream.avail_out = lenout;

        inflate(&d_stream, Z_SYNC_FLUSH);
        inflateEnd(&d_stream);
        return 0;
}

static int gzip_compress(char *bufin, int lenin, char *bufout, int lenout)
{
        z_stream d_stream;
        int result;

        memset(bufout, '\0', sizeof(lenout));
        d_stream.zalloc = NULL;
        d_stream.zfree  = NULL;
        d_stream.opaque = NULL;

        result = deflateInit2(&d_stream, Z_DEFAULT_COMPRESSION,
                                Z_DEFLATED, MAX_WBITS + 16,
                                9, Z_DEFAULT_STRATEGY);
        if (result != Z_OK) {
                err("deflateInit2");
                goto out;
        }
        d_stream.next_in   = bufin;
        d_stream.avail_in  = lenin;
        d_stream.next_out  = bufout;
        d_stream.avail_out = lenout;

        deflate(&d_stream, Z_SYNC_FLUSH);
        deflateEnd(&d_stream);

        return d_stream.total_out;
out:
        return -1;
}

int main(void)
{
        int result;
        char bufin[] = "hello world";
        char bufout[1024];
        char bufout2[BUFSIZ];
        int lenout;

        lenout = gzip_compress(bufin, strlen(bufin), bufout, sizeof(bufout));
        gzip_uncompress(bufout, lenout, bufout2, sizeof(bufout2));
        printf("bufout2: %s\n", bufout2);

        return 0;
out:
        return -1;
}

阅读(4544) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

守猪的幸福2011-11-11 00:57:10

囧o(╯□╰)o
: fatal error C1083: Cannot open include file: 'netinet/in.h': No such file or directory

守猪的幸福2011-11-11 00:55:43

: fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
俺滴VC太差了……

@sky2011-11-10 09:45:54

#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <zlib.h>

#define err(msg) perror(msg)
#define SA struct sockaddr

static int tcp_net_listen(char *ip, int port)
{
        struct sockaddr_in addr;
  &nb

@sky2011-11-09 10:19:06

#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <zlib.h>

#define err(msg) perror(msg)
#define SA struct sockaddr

static int tcp_net_listen(char *ip, int port)
{
        struct sockaddr_in addr;
  &nb