基于“泵”的TCP通讯(接上篇)
基于“泵”的TCP通讯(接上篇)
上一篇博客中说了基于“泵”的UDP通讯,附上了一个Demo,模拟飞鸽传书的功能,功能不太完善,主要是为了说明“泵”在编程中的应用。本篇文章我再附上一个关于TCP通讯的两个Demo,也都采用了“泵”模式:
1.由于我把通讯部分的代码写在了一个dll中,这个demo只是简单的应用这个dll,主要完成发送字符串、字节流、可序列化对象等功能,效果图如下:

图1 服务端

图2 客户端
2. 一个简单的屏幕监控程序,主要有屏幕监控、键盘鼠标监控、键盘鼠标控制等功能。监控服务端可以同时监控多个客户端,效果图如下:

图3 服务端监控界面
这个demo稍微复杂一点,各功能实现如下:
1) Windows Hook编程,主要使用了WH_MOUSE_LL和WH_KEYBOARD_LL两种低级钩子,所以钩子回调方法直接写在了同一个程序中,没有单独写在一个dll中。使用这两种钩子主要是监控客户端的鼠标和键盘信息;
2) 屏幕监控直接截屏发送到服务端,没有使用任何算法,效率不高但可以看,毕竟这个不是重点;
3) 由于要远程操作鼠标和键盘,客户端使用了mouse_event 和 keybd_event两个win32 API,模拟鼠标个键盘输入。
双击监控屏幕控制远程主机屏幕。
再说一下通讯部分的原理,其实它跟UDP中的结构差不多,不同的是UDP中是一对一的,“泵”结构只有一个,借用上一篇博客中的插图:

图4 泵结构
TCP中的客户端跟上图差不多,服务端就稍微有点不同,因为它需要接收多个客户端的数据,因此“数据接收泵”、“数据分析泵”都有多个,每一个都跟上图类似。
本TCP通讯库没有做心跳检测处理,因此在断网和断电等情况下,不会激发相应事件通知你掉线。该功能需要你自己实现,比如每隔一定时间给双方发送一个信息。
源码共有4个项目:
1)TCPCommunication:通讯库
2)TCPCommunicationDemoServer:demo1的服务端
3)TCPCommunicationDemoClient:demo1的客户端
4)RemoteDeskServer:demo2的服务端
5)RemoteDeskClient:demo2的客户端
第二个Demo性能有待优化(可以将钩子部分代码注释掉,不再监控客户主机的键盘鼠标输入)。VS2008 Win7编译通过,源码下载地址:http://files.cnblogs.com/xiaozhi_5638/TCPCommunication_Source.rar
希望对各位有帮助,谢谢。
基于“泵”的TCP通讯(接上篇)的更多相关文章
- .Net开发笔记(十五) 基于“泵”的TCP通讯(接上篇)
上一篇博客中说了基于“泵”的UDP通讯,附上了一个Demo,模拟飞鸽传书的功能,功能不太完善,主要是为了说明“泵”在编程中的应用.本篇文章我再附上一个关于TCP通讯的两个Demo,也都采用了“泵”模式 ...
- wp8使用Beetle.NetPackage实现基于TCP通讯的订单查询
在新版本的Beetle.NetPackage中提供了对Protobuf和Controller的支持,所以在WP8下使用Beetle.NetPackage进行基于TCP的数据交互则一件非常简单事情.下面 ...
- 基于STM32和W5500的Modbus TCP通讯
在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植千的准备工作 为了实现Modbus TCP ...
- 基于QTcpSocket和QTcpServer的Tcp通讯以及QDataStream序列化数据
最近要在QT下开发Tcp通讯,发送序列化数据以便于接收. 这里涉及到几个问题: 1.QTcpSocket.QTcpServer的通讯 2.QDataStream序列化数据 多的不说,直接上干货!!! ...
- (二): 基于ZeroMQ的实时通讯平台
基于ZeroMQ的实时通讯平台 上篇:C++分布式实时应用框架 (Cpp Distributed Real-time Application Framework)----(一):整体介绍 通讯平台作为 ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- C#TCP通讯框架
开源的C#TCP通讯框架 原来收费的TCP通讯框架开源了,这是一款国外的开源TCP通信框架,使用了一段时间,感觉不错,介绍给大家 框架名称是networkcomms 作者开发了5年多,目前已经停止开发 ...
- 推荐一款开源的C#TCP通讯框架
原来收费的TCP通讯框架开源了,这是一款国外的开源TCP通信框架,使用了一段时间,感觉不错,介绍给大家 框架名称是networkcomms 作者开发了5年多,目前已经停止开发,对于中小型的应用场景,够 ...
- java基础55 UDP通讯协议和TCP通讯协议
本文知识点(目录): 1.概述 2.UDP通讯协议 3.TCPP通讯协议 1.概述 1.在java中网络通讯作为Socket(插座)通讯,要求两台都必须安装socket. 2.不同的 ...
随机推荐
- 采用tcpdump攫Android网络数据包
1 空灵的原理 tcpdump(需Root用户执行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其它数据包.简单说就监控手机进出网络数据. 2 方法优劣 2.1长处 1.手机数据包无遗漏 2 ...
- UML之轻松入门(2)-掌握Junit,让我们的开发更高效
使用UML不仅能够形象化的表达我们的程序思想,并且能够帮助我们提高程序的质量.一个杂乱无章的程序让维护者望而生畏,其成本也可想而知.在面向程序设计(OOD)中有5条原则是帮助我们设计一个高效 ...
- MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器 MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过A ...
- python元类分析
刚開始接触到Python新式类中的元类的概念的时候非常是纠结了下..不知道这是个啥东西... 用下面几个定义来说明吧: (1)Python中,类也是对象..仅仅只是这样的对象比較的特殊,他用于创建别的 ...
- Cocos2d-x3.0 TestCPP文件夹的注意事项
1.不多说了,重力加速度. 2.ActionMangerTest:此Test它是由导演来展示,以获得集体诉讼经理ActionManager类别,操作控制节点. ①CrashTest:破坏demo,毁. ...
- java中Integer包装类的具体解说(java二进制操作,全部进制转换)
程序猿都非常懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往须要操作Integer,或者各种进制的转换等等.我今天就为大家具体解说一下Integer的使用吧.看代码: ...
- IntelliJ IDEA —— Android开发的另一个选择
IntelliJ IDEA —— Android开发的另一个选择 很早就听过Eclipse的大名,但在我初学Java的时候,一位前辈推荐的IDE却是IntelliJ IDEA.因为之前用过JetBra ...
- PHP 3:从Login界面谈PHP标记
原文:PHP 3:从Login界面谈PHP标记 前一篇文章简要介绍了此实例.OK,我们就从第一个页面Login页面入手吧.还是看看界面怎么样,是不是很想指导它到底是如何实现的呢?好的,看看其代码吧: ...
- VS2015集成新潮工具4
VS2015集成新潮工具(四) 本课程来源与微软connect视频教程,Modern Web Tooling in Visual Studio 2015 本课程主要讲下当下流行的前端工具 bowe ...
- Lightdm:奔跑吧GUI[已解决]
Fedora替换gdm为lightdm解决无法登陆问题 前两天安装Codeblocks,这货安装了很多包和依赖,直接导致我重启进步去界面,卡在fedora LOGO处,如下 实在忧伤,已经因为折腾不知 ...