基于“泵”的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通讯(接上篇)的更多相关文章

  1. .Net开发笔记(十五) 基于“泵”的TCP通讯(接上篇)

    上一篇博客中说了基于“泵”的UDP通讯,附上了一个Demo,模拟飞鸽传书的功能,功能不太完善,主要是为了说明“泵”在编程中的应用.本篇文章我再附上一个关于TCP通讯的两个Demo,也都采用了“泵”模式 ...

  2. wp8使用Beetle.NetPackage实现基于TCP通讯的订单查询

    在新版本的Beetle.NetPackage中提供了对Protobuf和Controller的支持,所以在WP8下使用Beetle.NetPackage进行基于TCP的数据交互则一件非常简单事情.下面 ...

  3. 基于STM32和W5500的Modbus TCP通讯

    在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植千的准备工作 为了实现Modbus TCP ...

  4. 基于QTcpSocket和QTcpServer的Tcp通讯以及QDataStream序列化数据

    最近要在QT下开发Tcp通讯,发送序列化数据以便于接收. 这里涉及到几个问题: 1.QTcpSocket.QTcpServer的通讯 2.QDataStream序列化数据 多的不说,直接上干货!!! ...

  5. (二): 基于ZeroMQ的实时通讯平台

    基于ZeroMQ的实时通讯平台 上篇:C++分布式实时应用框架 (Cpp Distributed Real-time Application Framework)----(一):整体介绍 通讯平台作为 ...

  6. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  7. C#TCP通讯框架

    开源的C#TCP通讯框架 原来收费的TCP通讯框架开源了,这是一款国外的开源TCP通信框架,使用了一段时间,感觉不错,介绍给大家 框架名称是networkcomms 作者开发了5年多,目前已经停止开发 ...

  8. 推荐一款开源的C#TCP通讯框架

    原来收费的TCP通讯框架开源了,这是一款国外的开源TCP通信框架,使用了一段时间,感觉不错,介绍给大家 框架名称是networkcomms 作者开发了5年多,目前已经停止开发,对于中小型的应用场景,够 ...

  9. java基础55 UDP通讯协议和TCP通讯协议

    本文知识点(目录): 1.概述    2.UDP通讯协议    3.TCPP通讯协议 1.概述 1.在java中网络通讯作为Socket(插座)通讯,要求两台都必须安装socket.    2.不同的 ...

随机推荐

  1. WPF 辅助开发工具

    原文:WPF 辅助开发工具 以下介绍的工具均为免费版,有些是源代码开放,希望对大家有用. Kaxaml 轻量级XAML 编辑器,可以同时进行图像和XAML 代码的编辑.最终生成开发人员想要的XAML ...

  2. 有意思的cmd命令

    1. Msconfig命令显示系统配置窗体,能够了解一些服务.启动相关的信息. 2.Gpedit.msc 命令显示本地组策略编辑器,能够设置用户登录时执行的程序. 3. Regedit 这个应该非常多 ...

  3. 我的MYSQL学习心得(八)

    原文:我的MYSQL学习心得(八) 我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...

  4. 10. IDENTITY属性使用小结

    原文:10. IDENTITY属性使用小结 从SQL Server 2012开始有了Sequence,简单用列如下: CREATE SEQUENCE TestSeq START INCREMENT ; ...

  5. ios MKNetworkKit 的使用

    常用框架比如:AFNetworking,ASIHttpRequest,SDWebImage,MKNetWorKit等. iOS5已出来这么久了,而ASIHttpRequest的作者已经申明不更新了,在 ...

  6. Java设计模式论述

    为何须要设计模式: 模式是做事的方法,是实现目标,研磨技术的方法.这样的对高效技术不懈追求的思想,广泛见于诸多领域,比如制作精美佳肴的过程.对于不论什么一种迈向成熟的全新技艺,身处这个行业的人都须要寻 ...

  7. yii性能调节

    网络应用程序的性能受很多因素的影响.数据库存取,文件系统操作,网络带宽等都是潜在的影响因素. Yii 已在各个方面减少框架带来的性能影响.但是在用户的应用中仍有很多地方可以被改善来提高性能. 1. 开 ...

  8. HDOJ 4416 Good Article Good sentence

    题解转自:http://blog.csdn.net/dyx404514/article/details/8807440 2012杭州网络赛的一道题,后缀数组后缀自己主动机都行吧. 题目大意:给一个字符 ...

  9. xfire集成spring构建webservice

    前言:xfire.spring都是比较流行的技术,这里就不再赘述他们各自的优点:本文着重介绍xfire和spring的整合,不会做太深入的探究. 服务端 1. web.xml配置 spring配置部分 ...

  10. python初始化MySQL数据库模板

    很基础,但是经常用到,记录一下,省得每次手打 #!/bin/env python # -*- encoding=utf-8 -*- import MySQLdb # Database info hos ...