模拟XShell的小项目

该项目旨在模拟XShell的功能,通过TCP Socket在Windows客户端与Linux服务器端之间传输命令并展示执行结果。使用popen函数而非system调用,以避免子shell带来的问题。执行流程包括客户端发送命令,服务器执行命令并保存结果,再将结果回传至客户端展示。代码简洁,直接展示了LinuxServer和WindowsClient的实现。
摘要由CSDN通过智能技术生成

不知道大家有没有用过XShell这款工具,这款工具通过windows可以远程操作处于开机状态的linux操作系统,也就是说把你的电脑和一台服务器连入网络,你通过输入服务器所在的IP地址建立一个会话就可以远端操作linux的服务器了,十分方便。

这次这个模拟XShell的小项目就是类似的功能

 

执行流程:

windows客户端输入命令,通过网络传输到linux服务器端上,linux服务器端执行命令,将执行命令产生的结果保存进文件,然后再将文件传输回windows客户端进行展示。

 

问题思考:真的有必要将结果保存在文件当中么?可以通过管道直接把结果文件流书写到socket上,然后客户端直接读取socket上的数据,省去书写和读取文件的时间

 

说一下大概的思路,很简单的一个大体思路。

完成通信的方式是通过socket编程实现的,也就是说,启用在linux的服务器端和启用在windows的客户端之间交换命令和结果集都是通过socket传输的。

执行命令的方式不采用system执行系统调用的方式,因为这么做可能产生如下后果:对于shell执行命令来说,大多数时候都是产生一个子shell来执行命令,他本身不会亲自涉险,因为一旦用户编写的程序含有什么严重BUG会导致终端出现错误而停止运行,这时人和linux之间的交互方式就被切断了,尤其是在没有图形界面的纯命令操作环境下,连正常关机都很难办到,所以为了避免这种情况的发生shell会产生一个子shell进程来执行。这就意味着有可能你在切换工作目录的时候(比如说你用cd这个命令),就只会在子进程shell中切换工作目录,然后你打算在新目录下做点什么的时候会发现,你欸切换目录其实失败了,因为在父亲shell下你根本没有切换过目录。

那么我采用了popen这个函数,本身这个函数是通过管道来实现的,这个函数通过传参的方式读入命令,然后可以通过管道的另一端将返回的结果集书写进文件里面。然后我把文件传输回windows显示出来。

执行流程很简单不是什么难题。因为是tcp是流形式的,在windows一段采用二进制读写就可以了。

因为代码不是很多,就直接贴出来了

LinuxServer(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值