Server................
// Server.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "zlib.h"
#include <WinSock2.h>
#include <Windows.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"ZLib.lib")
#define PORT 4000
#define LOCAL_HOST "192.168.1.100" DWORD WINAPI createproc(LPVOID lpParment)
{
SOCKET server = (SOCKET)lpParment;
char recvbuf[MAX_PATH] = {};
char sendbuf[MAX_PATH] = {};
int err= ; while (true)
{
unsigned long recvLen=sizeof(recvbuf),recLen=sizeof(recvbuf),stLen=sizeof(recvbuf);
char unresvbuf[MAX_PATH] = {};
// memset(recvbuf,0x00,sizeof(recvbuf));
err = recv(server,recvbuf,MAX_PATH,); uncompress((BYTE*)unresvbuf,&recLen,(BYTE*)recvbuf,stLen); if (err == SOCKET_ERROR)
{
printf("Recv msg error\r\n");
break;
}else
{
printf("Recv msg :%s\r\n",unresvbuf);
} char com[MAX_PATH] = {};
char strDst[]={};
memset(sendbuf,0x00,sizeof(sendbuf));
gets(sendbuf);
unsigned long srcLen=sizeof(sendbuf),bufLen=sizeof(sendbuf),dstLen=sizeof(sendbuf); compress((BYTE*)com,&bufLen,(BYTE*)sendbuf,srcLen);
// printf("压缩长度:%d\r\n 压缩以后的内容:%s\r\n==============\r\n",bufLen,com); // uncompress((BYTE*)strDst,&dstLen,(BYTE*)com,bufLen);
// printf("解压缩长度:%d\r\n解压缩以后的长度:%s\r\n",dstLen,strDst); err = send(server,com,(int)strlen(com),);
if (err == SOCKET_ERROR)
{
printf("Send msg error\r\n");
//return -1;
break;
}else
{
printf("Send Msg:%s\r\n",sendbuf);
}
}
return ;
} int main(int argc, _TCHAR* argv[])
{
WSADATA wsadata;
SOCKET Serversocket,Clientsocket;
struct sockaddr_in LocalAddr,clientaddr;
HANDLE hThread;
int err = ;
if (WSAStartup(MAKEWORD(,),&wsadata) != )
{
printf("Wsa init error\r\n");
return -;
}
Serversocket = socket(AF_INET,SOCK_STREAM,);
if (Serversocket == INVALID_SOCKET)
{
printf("Serversocket Error\r\n");
return -;
}
LocalAddr.sin_family = AF_INET;
LocalAddr.sin_port = htons(PORT);
LocalAddr .sin_addr.S_un.S_addr = inet_addr(LOCAL_HOST);
memset(LocalAddr.sin_zero,0x00,); err = bind(Serversocket,(struct sockaddr*)&LocalAddr,sizeof(LocalAddr));
if (err != )
{
printf("Bind Port error\r\n");
return -;
} err = listen(Serversocket,);
if (err != )
{
printf("Listen error\r\n");
return -;
} while (true)
{
/*
char com[MAX_PATH] = {0};
char xxoo[MAX_PATH] = "Nimagebi...caonima"; unsigned long srcLen=sizeof(xxoo),bufLen=sizeof(xxoo),dstLen=sizeof(xxoo);
char strDst[1024]={0};
compress((BYTE*)com,&bufLen,(BYTE*)xxoo,srcLen);
printf("/nAfter Compressed Length:%d\r\nCompressed String:%s\r\n==============\r\n",bufLen,com); uncompress((BYTE*)strDst,&dstLen,(BYTE*)com,bufLen);
printf("/nAfter UnCompressed Length:%d\r\nUnCompressed String:%s\r\n",dstLen,strDst);
*/
int addrlen = sizeof(clientaddr);
Clientsocket = accept(Serversocket,(struct sockaddr*)&clientaddr,&addrlen);
if (Clientsocket == INVALID_SOCKET)
{
printf("Clientsocket Error\r\n");
//return -1;
break;
} printf("Have client connect herf:%s ---> %d\r\n",inet_ntoa(clientaddr.sin_addr),clientaddr.sin_port); hThread = CreateThread(NULL,,createproc,(LPVOID)Clientsocket,,NULL); //新建立线程,如果不简历,相互通信几句就卡死了。奇怪。 if (hThread == NULL)
{
printf("New Create thread error\r\n");
break;
}else
{
printf("New create Thread susccess\r\rn");
}
CloseHandle(hThread); }
closesocket(Clientsocket);
closesocket(Serversocket);
WSACleanup();
return ;
}

Client

// Client.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "zlib.h"
#include<winsock2.h>
#include <windows.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"Zlib.lib")
#define PORT 4000
#define Local_host "192.168.1.100" int main(int argc,char** argv)
{
WSADATA wsadata;
SOCKET localsocket;
sockaddr_in localaddr;
char sendbuf[MAX_PATH] = {};
char recvbuf[MAX_PATH] = {};
int locallen = ;
int ret = ; if (WSAStartup(MAKEWORD(,),&wsadata) != )
{
printf("wSA STARTinit error\r\n");
return -;
}
localsocket = socket(AF_INET,SOCK_STREAM,);
if (localsocket == INVALID_SOCKET)
{
printf("localsocket error\r\b");
return -;
} localaddr.sin_addr.s_addr = inet_addr(Local_host);
localaddr.sin_port = htons(PORT);
localaddr.sin_family = AF_INET; ret = connect(localsocket,(sockaddr*)&localaddr,sizeof(localaddr));
if (ret == SOCKET_ERROR)
{
printf("Connect error\r\n");
return -;
} while (true)
{
memset(sendbuf,,sizeof(sendbuf));
memset(recvbuf,,sizeof(recvbuf));
char sendres[MAX_PATH] = {};
char unsendres[MAX_PATH] = {};
unsigned long SendLen=sizeof(sendbuf),sufLen=sizeof(sendbuf),stLen=sizeof(sendbuf); gets(sendbuf); compress((BYTE*)sendres,&sufLen,(BYTE*)sendbuf,stLen);
// uncompress((BYTE*)unsendres,&stLen,(BYTE*)sendres,SendLen);
// printf("解压缩以后的内容:%s",unsendres);
ret = send(localsocket,sendres,(int)strlen(sendres),);
if (ret == INVALID_SOCKET)
{
printf("Ret send msg error\r\n");
break;
} char com[MAX_PATH] = {};
char strDst[MAX_PATH]={};
ret = recv(localsocket,recvbuf,MAX_PATH,);
unsigned long srcLen=sizeof(recvbuf),bufLen=sizeof(recvbuf),dstLen=sizeof(recvbuf);
uncompress(( BYTE*)com,&dstLen,( BYTE*)recvbuf,bufLen); if (ret == INVALID_SOCKET)
{
printf("Recv msg error\r\n");
break; }else
{
//printf("Recv buf is :%s\r\n",recvbuf);
printf("Recv msg susscess :%s\r\n",com);
} }
closesocket(localsocket);
WSACleanup();
return ;
}

VC SOCKET 压缩通信学习的更多相关文章

  1. 孙鑫视频VC++深入详解学习笔记

    孙鑫视频VC++深入详解学习笔记 VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Le ...

  2. Dubbo底层采用Socket进行通信详解

    由于Dubbo底层采用Socket进行通信,自己对通信理理论也不是很清楚,所以顺便把通信的知识也学习一下. n  通信理论 计算机与外界的信息交换称为通信.基本的通信方法有并行通信和串行通信两种. 1 ...

  3. 使用Socket进行通信

    客户端通常可使用Socket的构造器来连接到指定服务器,Socket通常可使用如下两个构造器. Socket(lnetAddress/String  remoteAddress , int  port ...

  4. java socket报文通信(一)socket的建立

    java socket报文通信(一) socket的建立  今天来和大家分享一下java中如何使用socket进行通信.先来啰嗦两句,看看Tcp/ip和udp: TCP是Transfer Contro ...

  5. java socket线程通信

    关于socket线程通信的一些知识整理 一般我们需要要让两台机子进行通信,需要创建一个Server 类,一个Client类,还需要创建一个线程类 server public class Server ...

  6. C# 通信学习笔记

    C# 通信学习笔记 DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不 ...

  7. 《java入门第一季》之Socket编程通信和TCP协议通信图解

    Socket编程通信图解原理: TCP协议通信图解

  8. socket 编程通信实例

    socket 编程通信实例:TCPserver: , ServerThread,  ;    WSADATA wsaData;    ,),  ;    }    ;    }    } ;    g ...

  9. Socket通讯简易学习

    Socket打开通信通道,告诉本地机器,愿意在该通道上接受客户请求——监听,等待客户请求——接受请求,创建专用链接进行读写——处理完毕,关闭专用链接——关闭通信通道(当然其中监听到关闭专用链接可以重复 ...

随机推荐

  1. TP分页

    ①在Home下设置Publics文件夹或在thinkPHP下library的vender 把page.class.php 考贝进入 ②通过new 实例化方式调用 $page=new \Home\Pub ...

  2. RTSP安防摄像机(海康大华宇视等)如何推送到RTMP流媒体服务器进行直播

    方案介绍 目前互联网直播的CDN和标准RTMP流媒体服务器通常只能接收RTMP格式的音视频推流.目前市场上有一些自带RTMP推流的摄像机和编码器,可以直接在其rtmp推流配置里面配置推送到RTMP流媒 ...

  3. oracelp---随意 记录(nvl)

    1.Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExp ...

  4. nginx1.4.7+uwsgi+django1.9.2+gridfs 在ubuntu14.0.4上部署

    本文基于root用户安装配置,实现django项目名为trcode sudo apt-get updatesudo apt-get install python-pipsudo apt-get ins ...

  5. offset,scroll,client系列

    offsetHeight: 元素高,height+border+paddingoffsetWidth: 元素宽,width+border+paddingoffsetTop: 距离offsetParen ...

  6. OpenCV3计算机视觉+python(三)

    使用OpenCV3处理图像 下面要介绍的内容都与图像处理有关,这时需要修改图像,比如要使用具有艺术性的滤镜.外插(extrapolate)某些部分.分割.粘贴或其他需要的操作. 不同色彩空间的转换 O ...

  7. ABAP权限检查,TCode与权限对象进行关联

    一.确认权限对象,和关联字段: Tcode:SU21 维护权限对象例如"M_MSEG_WMB",它关联字段为'WERKS'M_MSEG_WMB 物料凭证:工厂 二.在ABAP代码中 ...

  8. zabbix3.2.4监控MySQL5.7.16状态

    一.添加监控用户mysql> grant all privileges on *.* to 'zabbix'@'localhost' identified by 'zabbix';mysql&g ...

  9. 剑指offer 面试25题

    面试25题:题目:合并两个排序的链表 题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路:递归,并需注意对空链表单独处理. 解题代码: # -* ...

  10. English Phrases

    @1:Phrases requst sth from/of sb 向某人要求某物 a new lease on life   重获新生.焕发生机 state of the art 最先进的 at th ...