基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇
近期趁公司没项目来,想学习一下C和GTK+3 ,顺道再学习一下Linux下有关网络编程方面的知识。
一、学习知识:
1、C基本语法
2、GTK+3 API学习 GUI相关知识学习
3、Glade使用及事件绑定,以及配合GTK+3 开发GUI界面。
4、Linux下Socket编程
5、Windows下基于MSYS2进行开发GTK的GUI界面。
二、终极目标:
最终程序实现的功能如下:
1、实现远程显示客户端屏幕功能。
2、实现鼠标坐标的远程控制功能。
3、实现双方客户端,进行文字聊天的基本功能。
4、实现双方客户端,文件传输功能。
三、实现思路(解决方案):
aaarticlea/png;base64,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sIFNiJbv2bPnueeee+6nYcOGNRunI/05lOVz8QHxIIgLGTBgwKGDBw8ObG97CIJQDhQSnJqamo5jx479dfv27aOkX0McwJUrV7zx+PnnnydOmDBh86ZNm57X1tZuYGatEvHNN9+88eabb66QJQCXLl3yHT169O8XL17sJv3azZs3XfH47bffnkGD/Ouvv461srIqEsfqttHSZ+bIy8uz27Nnz9COHTvWIDvArVu3ujzkVnPlifaFOo/y0aTOI2ebNLq6unUWFhYlPj4+l2NiYmJfffXV7/C/ovUrJDiffvrpPIiNtbV14QcffPD54MGD97u5ud0wMDCoqqioME5PT/fbsmXL+JUrV07DTRwVFXV88uTJPyhqlCoQHx8fKut4RkaGZ9++fU+VlJRYuLi43JkxY8biJ5544m9nZ+cs3LhJSUnBaLiRauPQoUMDhgwZsjcuLi4cDXRL76cMN2dzn1kSdDLq6up0582b9ynul40bN74wf/78T8Swj+APdR7/C3Ue5YPfNHIanjx5MgKPVatWvXb06NF+7u7u1xV5X4UEBzcdnv/888+nIiMjT0i+ZmpqWta7d+8zePj5+aVDAbdu3fqsJgkOvjxEe0Ns+vfvfxg/ZlwXyTLh4eFxeGDaCT0j5LH76quv3p01a9ZC8axvHXwEZ8OGDS+i5zd37twF33333as//vjjfyA+zfWciPaBOo//hTqP/0baRox8MXuBWQv8tjEanj59+lKM+hR5X4UEB0NJPHfv3j2hpXKvvPLKmieffPIvW1vbf22mhDn95cuXv3X27Nle+CLNzc1LkcsNAjVq1KjtsurDh/z666/f5s7Bl//CCy9sxA2AHwgf2xsaGrTHjRvXlBwQvZHdu3cP485FJuKlS5dOh3IXFRVZderU6R6E85133lnWr1+/o5L1LFy4cNbs2bO/4P7nGlKIKz4LBASfG70eabGR5Nlnn9167ty5nmlpaf4eHh6Z8uxvaRiuiP337983g53dunW7iEbl2LFj0Wh8EhISuuOmwnGch14tn8+Ma8odP336dB/0CNFzwo8On3HFihVv4j2k7SDaF+o8/hfqPMoHbSWmxpFI19vb+wo+N9plRd9XIcHp2rXrNTSQ69evf+mNN974prlyGHrLEpvFixfPeP/997+UPIZhGuaR8UCj9vnnn/9P4CSE5t133/1KsqG9du1a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" alt="" />
1、客户端A 登录Server,将信息给Server。
2、Sever当前好友列表,反馈给客户端A
3、客户端A发出(远程控制,文字或者文件传输)请求和数据发给Sever。
4、Sever接到请求后,转交给被收端客户端B。
5、客户端B收到请求后,确认接收。
6、Sever将数据传送给你客户端B
选择此解决方案的理由:
家里的宽带和老家家里的宽带,上网方式都是通过ADSL+无线路由器的方式,而且由于IP4的地址资源短缺,网络商给分配的IP也都是内部网络的IP,所以目前就用服务器中转的方案来实现远程控制,双方客户端不需要知道彼此的IP地址,以及是在外网还是在内网,所有数据都到服务器上做中转。
此方案特点:技术实现起来简单,缺点就是服务器的通信压力大,效率不高。
其他技术方案解决方案:
P2P内网穿透
NAT穿透
这几个技术方案,本人没有研究过,不知道在技术实现上难度大不大,所以等研究明白了,再改用这几个技术方案。
四、系列目录
基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇
基于GTK+3 开发远程控制管理软件(C语言实现)系列二 Centos7下开发环境搭建
五、本系列定期更新,直到软件完成,同时会将代码开源到 码云
Git下载地址
https://gitee.com/pete_jones/RemoteControl.git
本人也是C菜鸟一枚,如有问题咱们共同探讨,欢迎发Email给我 pete_jones@163.com
基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇的更多相关文章
- 基于GTK+3 开发远程控制管理软件(C语言实现)系列三 Windows7开发环境搭建
一.介绍与准备 考虑到目标客户端基本都是windows客户端,所以此次开发环境将搭建在windows7下,相关开发工具有Msys2 和 Eclipse For C/C++ Msys2 是msys的升级 ...
- 基于GTK+3 开发远程控制管理软件(C语言实现)系列二 Centos7下开发环境搭建
一.安装gcc gcc-c++ make等编译工具 yum install gcc gcc-c++ kernel-devel 这一步,其实可以不用做,你在安装Centos7的时候,如果选择开发模式安装 ...
- 仿OpenStack开发云计算管理软件
仿OpenStack开发云计算管理软件 使用Python语言开发一套类似OpenStack的云计算管理平台LouCloud,具备基本的用户,服务器,镜像与 虚拟机管理功能,学习IaaS,虚拟化,Lib ...
- 用勤哲excel服务器开发旅行社管理软件
做这个旅行社管理软件之前,旅行社给我的印象就是“拉客”与“接客”,业务模式应该比较简单.但做起这样一个旅行社管理软件,才发现麻雀虽小.五脏俱全,一个旅行社的运作,牵扯到的方方面面远远超出自己之前的理解 ...
- Android实战开发租赁管理软件(适配UI,数据的存储,多线程下载)课程分享
亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系. 课程内容简单介绍 我们软件是基于移动设备的.所以我们必定的选择了安卓作为我们的开发工具.课 ...
- SDKMAN 软件开发工具包管理器
SDKMAN 是用来在类Unix 系统中管理多个版本的开发环境的工具.提供命令行接口来安装.切换.删除.列出候选版本. SDKMAN!是在大多数基于Unix的系统上管理多个软件开发套件的并行版本的工具 ...
- [转]3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】
本文转自:http://www.cnblogs.com/jirigala/archive/2010/10/07/1845275.html 2010-10-07 21:39 by 通用C#系统架构, 5 ...
- 优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件
欢迎来到优分享VR开源项目 优分享VR 开源中国Git地址: http://git.oschina.net/xumingwang/youkes_vr 优分享VR是 优分享安卓APP VR视频播放开源部 ...
- 基于NSIS脚本开发的安装程序制作软件:易量安装
原文 基于NSIS脚本开发的安装程序制作软件:易量安装 前几天“萝卜”给我推荐了一款安装程序制作工具——易量安装. 易量安装是一款安装程序制作软件,基于著名的NSIS(Nullsoft Scripta ...
随机推荐
- 查看Redis集群所有节点内存工具
指定集群中任意一个节点,查看集群中所有节点当前已用物理内存.配置的最大物理内存和系统物理内存. 源码(可从https://github.com/eyjian/redis-tools下载): #! ...
- C++指针一
指针也是变量,占有内存空间,用来保存内存地址. 指针也是一种数据类型,指针是一种数据类型,是指它所致内存空间的数据类型. 指针变量和它指向的内存块是两个不同的概念 *p操作内存 在指针声明时,*号表示 ...
- (记忆化搜索)Jury Compromise (poj 1015)
http://acm.fzu.edu.cn/problem.php?pid=1005 Description The fastfood chain McBurger owns several rest ...
- tomcat配置之后,localhost:8080访问不到猫界面解决办法
- 谈谈HashMap线程不安全的体现
原文出处: Hosee HashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了. 那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢 ...
- 还原wubutu系统
虚拟机->快照 进行系统还原备份
- 7.Git与项目
Git简介 Git是目前世界上最先进的分布式版本控制系统 安装 sudo apt-get install git 安装成功后,运行如下命令 git 产生 Linus在1991年创建了开源的Linux, ...
- 雪花算法(snowflake)delphi版
雪花算法简单描述: + 最高位是符号位,始终为0,不可用. + 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一个很重要的作用是可以根据时间进行排序. + 10位的机器标识,1 ...
- hdu 1.2.7
#include<cstdio> #include<iostream> using namespace std; int main() { //freopen("in ...
- JQuery实用技巧
1.关于页面元素的引用通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom ...