精华内容
下载资源
问答
  • 共享剪切板

    千次阅读 2018-03-26 21:06:51
    日常练习我要两台电脑,日常学习时再两台电脑间复制粘贴文本很不方便,在学习了一些Socket知识后,便萌发了自己做一个共享剪切板的程序。程序发送端会有简陋的图形化界面,将复制的文本粘贴到文本区域,按下发送按钮...

    日常练习

    我要两台电脑,日常学习时再两台电脑间复制粘贴文本很不方便,在学习了一些Socket知识后,便萌发了自己做一个共享剪切板的程序。

    程序发送端会有简陋的图形化界面,将复制的文本粘贴到文本区域,按下发送按钮就会将文本文件发送到另一台电脑上,打印在控制台,并自动将文本设置到这台电脑的剪切板上。

    因为才学浅陋,无法做到在此电脑上复制后无需其他操作就将文本发送到另一台电脑剪切板,希望以后能力足够后能够实现。

    下面是代码:

    发送端:

    package Socket;
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    import java.net.UnknownHostException;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    
    public class UdpSend {
    	static JTextArea textData = null;
    	static JButton sendBtn = null;
    
    	public static void create() {
    		JFrame f = new JFrame();
    
    		f.setLayout(new BorderLayout());
    		textData = new JTextArea(100, 100);
    		sendBtn = new JButton("发送");
    		sendBtn.addActionListener(new ActionListener() {
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				send(textData.getText());
    
    			}
    		});
    		f.add(textData, BorderLayout.CENTER);
    		f.add(sendBtn, BorderLayout.SOUTH);
    
    		f.setBounds(600, 250, 300, 400);
    		f.setVisible(true);
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    	}
    
    	public static void send(String data) {
    		DatagramSocket ds;
    		try {
    			// 创建Socket服务,0--1024端口为系统端口或保留端口
    			ds = new DatagramSocket(10000);
    			// 数据打包
    			byte[] p = data.getBytes();
    			DatagramPacket dp = null;
    			try {
    				dp = new DatagramPacket(p, p.length, InetAddress.getByName("此处填上另一台电脑ip"), 8080);
    			} catch (UnknownHostException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    			// 发送数据
    			try {
    				ds.send(dp);
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			// 关闭资源
    			ds.close();
    		} catch (SocketException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    	public static void main(String[] args) throws Exception {
    
    		create();
    		
    
    	}
    
    }

    接收端:

    package test;
    
    import java.awt.Toolkit;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.StringSelection;
    import java.awt.datatransfer.Transferable;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
     public class UdpReceive {
    
    	public static void main(String[] args) throws Exception {
    		//建立Socket连接
    		while(true) {
    		DatagramSocket ds = new DatagramSocket(8080);
    		//定义数据包。用于存储数据
    		byte[] buf = new byte[2048];
    		DatagramPacket dp = new DatagramPacket(buf, buf.length);
    		//接收数据
    		ds.receive(dp);
    
    		String data = new String(dp.getData(),0,dp.getLength());
    		System.out.println(data);
    		setSysClipboardText(data);
    		
    		
    		//关闭资源
    		ds.close();
    		}
    	}
    //设置到剪切板
    	private static void setSysClipboardText(String data) {
    		 Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();  
    	        Transferable tText = new StringSelection(data);  
    	        clip.setContents(tText, null);
    		
    	}
    
    }
    



    展开全文
  • SSH+VIM 共享剪切板实现详解

    千次阅读 2019-06-11 12:54:52
    SSH+VIM 共享剪切板实现详解共享剪切板介绍共享剪切板的实现原理共享剪切板的实现配置本地虚拟机上共享剪切板的简化实现 共享剪切板介绍 Linux和Windows各有优势, 为了发挥他们各自的功能优势, 相信很多Linux服务器...

    共享剪切板介绍

    Linux和Windows各有优势, 为了发挥他们各自的功能优势, 相信很多Linux服务器和Linux嵌入式开发的小伙伴和我一样在开发中使用最多方式是通过Windows上的SSH客户端(Putty/Xshell/ScureCRT/Mobaxterm, etc)通过SSH远程登陆到一个真实的服务器或者是一个本地Win10启动的virtualbox/vmware虚拟机。这种远程SSH的方式默认情况下有是个缺点就Windows和Linux开发主机的剪切板是不共享的。当然如果如果在Putty上通过鼠标选择+右键来粘贴也是能够实现简单的剪切板共享的。不过这种方式对vim就显得不怎么好用了,毕竟vim的全键盘操作方式和频繁的使用鼠标操作是格格不入的,如果我们希望远程登录的情况下vim的y、p操作也能正常和windows共享剪切板呢,则需要我们实现真正的剪切板共享功能。

    共享剪切板的实现原理

    想要实现真正的共享剪切,必须有借助大多数Linux发行版中图形界面提供Xwindow机制,这个Xwindow架构这就不详解了,希望了解更多的小伙伴可以自行百度一下,简单的总结一下Xwindow就是Linux下通过它实现了图形显示的请求和显示方法的分离。也就是指服务器上运行的图形程序的界面显示操作可以不局限在本地的显示器,通过Xwindow可以实现图形界面在在其他任何一台机器上显示的效果。Xwindow架构中将Linux本地运行的支持Xwindow的程序称之为Xclient,负责实现图形显示的程序称之为Xserver,程序的图形界面想要在另一个机器上显示的前提条件自然是这个显示机器上需要有完整的Xserver支持程序(Winodws上比较出名的Xserver实现程序有:Xming、Xmanager以及Mobaxterm)以及本地的Linux系统需要启动图形界面(如果你的linux开发主机没有启动图形界面,很不幸,下面的方法都不适用于你)。

    Xwindow的这个效果还是挺牛逼的,不过这个功能实际个人感觉没什么太多用处了,毕竟通过完整的远程桌面登陆软件可以获得更加完整好用的远程桌面体验。不过幸运的是这个Xwindow在实现的时候顺便实现了一个系统级剪切板,我们在Ubuntu、CentOS上通过鼠标右键在图形界面上选择复制等操作实际上就将内容复制到Xwindow的这个系统剪切板上来。由于这个剪切板是Xwindow实现的,自然就带了Xwindow最牛逼的远程特性。因此只要我们在本地Win10上启动一个Xserver程序,然后再在Linux开发主机上配置Xwindow使用这个Win10上的Xserver,此后Windows的系统剪切板就和Linux开发主机上的系统剪切板连接在一起了,不管那边执行了复制命令,这个共享剪切板都会自动更新。

    除了要知道Xwindow存在这么一个神奇的系统剪切板之外,我们还需要了解一下VIM的剪切板管理机制:
    VIM中实际上没有剪切板的概念,VIM内部维护了多个缓存寄存器,这些寄存器都可以当成剪切板来理解。通过:reg命令我们一般可以看多如下内容:
    在这里插入图片描述
    这里的每一行都是一个寄存器,其中0-9可以理解为是vim内部维护的10个独立剪切板,我们在使用y命令的时候实际上默认就在使用这个0号寄存器,1-9号寄存器实际上就是剪切板历史记录。这里我们需要重点了解的是*号和+号剪切板,通过;h registers帮助文档我们可以了解到这两个剪切板在vim编译时添加+xterm_clipboard特性才会支持,并且如果这两个剪切板不存在, 那么对他的所有操作都会默认重定向到0号剪切板上来。xterm_clipboard这个特性实际上就是指终端是否支持Xwindow实现的系统剪切,几乎现在所有Linux发行版的终端都支持这个特性。因此现代的vim一般都可以借助这两个寄存器来实现vim键盘命令来在操作Xwinow剪切板,其中的星号剪切对应是Xwindow的选择剪切板(鼠标选择时自动复制内容到这个剪切板),加号剪切对应的是和Win10上系统剪切板类似的复制剪切板(鼠标选择并按下复制快捷键后才会将选择的内容复制到这个复制剪切板),由于Windows上没有选择剪切板的概念,因此Win10上实现的Xserver程序默认都是直接将这两个剪切板映射的Windows唯一的系统剪切板上来。这个特性的结果就是如果配置好了Xwinodw共享剪切板,vim中操作这个两个剪切板任何一个都会触发Win10剪切板的更新,相反的,Win10下复制任何内容到系统剪切板都会触发vim中这两个剪切板的内容同时更新。

    共享剪切板的实现配置

    有了上面的基础概念后,我只需要做以下几个配置就可以实现共享剪切板了:

    1. Win10上选择一个Xserver程序并且配置好启动:这里个人推荐使用Mobaxterm,首先这个软件是免费绿色免安装的,第二它自带Xserver实现只需要简单勾选一下随程序启动就能实现正常的Xserver服务,配置截图类似如下:在这里插入图片描述
      通过如上的配置后只要Win10上运行着Mobaxterm就会自动提供一个Xserver服务,是不是很方便,毕竟Mobaxterm还有很多其他牛逼的功能嘛,这个Xserver只是顺便启动了一下(Mobaxterm是可以直接取代Putty实现ssh登陆的,因此实际上Windows端可以只启动一个Mobaxterm就能完成所有的远程登录操作,只可惜到目前为止最新的Mobaxterm 11.1 在vim设置了set termguicolors配置时依然存在光标消失的问题而导致我不得不继续使用Putty实现ssh登陆)。

    2. Linux开发主机上配置Xwindow使用远端的Xserver来替代本地的Xserver:
      大部分Linux发行版在图形界面启动时都是使用startx命令来启动Xwindow的,默认情况下发行版在图形启动时候总是会启动一个本地Xserver并且自动设置本地的图形界面使用本地的Xserver(毕竟图形界面主要的功能还是本地显示嘛),Xwinow指定Xserver的方式很简单,使用DISPLAY环境变量即可完成。当DISPALY=:0.0或者DISPLAY=:0时表示的是使用本地的Xserver,在Linux图形界面本地启动个终端并使用
      printenv|grep DISPLAY命令你应该能总使能看到该环境变量被默认设置成了:0/:0.0。为了使用Win10远端
      的Xserer我们只要需要重新 指定DISPLAY即可。

    在你的~/.bashrc中添加如下配置以实现SSH登陆时总是能自动执行DISPLAY的配置:
    export DISPLAY=4.25.6.23:0 #其中的ip修改为你自己Win10主机的ip。

    1. 修改vim的y、p命令默认使用共享剪切板:
      前面已经提到vim中y、p命令默认情况下使用的0号剪切板,想要使用星号或加号剪切板板得通过“*y/"*p来操作,这么费劲的操作自然是不乐意的,为了更加方便的使用共享剪切板,我们应该让配置vim默认使用星号或加号剪切板。

    在你~/.vimrc中加入如下配置即可实现vim默认使用系统级剪切板:
    set clipboard=unnamedplus,unnamed " 为了在多窗口见方面的复制粘贴, 这里选择默认使用’+'剪切板

    1. Win10建议额外使用一个更好的剪切板历史管理器:
      最新的Win10实际上已经提供了个剪切板历史管理功能,不过鉴于这个剪切板历史管理器没有搜索功能且管理的历史记录也不是太多,因此这里建议还是找一个更加专业的剪切板历史管理器使用的好,个人推荐Ditto这个软件,可绿化且功能强大,用了之后你一定会感谢我的。

    本地虚拟机上共享剪切板的简化实现

    上面提到的配置方式是通用的一个配置方式,不管是远程linux主机还是本地的linux虚拟机都是适用的,这个实现方案的一个缺点就是需要在本地的Win10主机上额外启动一个Xserver程序,像我这种由于Mobaxterm还存在BUG导致不得不继续使用Putty的情况,搞个开发还需同时启动两个程序,嗯,不是太开心。幸运的是,如果你像我一样,大部分开发都是Win10本地启动一个虚拟机然后再用SSH登陆这个虚拟机来干活的,则有一个更加方便简化的方法可以实现剪切板共享。

    这个简化方法的实现首先要了解的是不管virtualbox还是vmware,大部分虚拟机软件都会提供一个增强工具,这个增强工具一般都会提供如下几个功能:

    1. 为虚拟机提供图形性能增强。 2. 提供一个共享目录功能。 3. 提供一个共享剪切板功能。

    其中的第三点提供的共享剪切板功能可以理解为虚拟机会自动帮我们完成Win10主机系统剪切板和Linux虚拟客户机系统剪切板之间的同步操作,也就是指这里虚拟机程序替代了远端Xserver程序来为我们提供了共享剪切板能力。因此,如果我们仅仅是想实现个共享剪切板的功能自然不用在Win10上再启动个Xserver了。

    有了如上的概念了解后,我们只需要做如下配置就可以完成在不启动Xserver的情况下实现共享剪切板的功能了:

    1. 指定SSH登陆本地虚拟机时总是使用本地的Xserver:
      默认情况下的Xwindow有这么一个特性:给本地图形界面指派DISPALY=:0(前提到过),给远程SSH登陆的终端自动指派DISPALY=localhost:10.0, 为什么会这么自动配置我也没怎么研究,总之这个配肯定是不能干活的,前面我们通过.bashrc中修改DISPLAY来实现将其配置成正确的远端主机,这里由于我们需要继续使用Linux本地Xserver提供的系统剪切板,因此我们应该在SSH登陆时将DISPALY变量继续保持为指向本地Xserver。

    2. 修复sudo vim命令中系统剪切板无效的问题
      Xwindow默认情况下还有个特性就是如果Xserver指向的是本地Xserver它总是默认不允许其他用户直接使用Xserever(这个限制在执行远端Xserver时是没有的,因此第一个实现方法中没有提及这个问题),这里的其他账户包括root,也就是说我们在用自己的账户登陆到linux系统后不管是通过sudo还是su切换到root账户Xserver总是自动被禁用了(验证这个问题的一个方法是sudo vim启动vim后通过;reg查看寄存器,你会发现*和+寄存器消失了)。这就导致了我们在使用sudo vim编辑一些/etc等系统文件时无法正常使用系统剪切板了,这个问题只要是在DISPLAY=:0时总是默认会有的,嗯,不是很爽。幸运的是,Xwindow提供了一个取消这个限制的命令:xhost + , 在使用sudo之前只需要执行一次这个命令,就能解除Xwindow对其他用户的限制。既然是只用执行一次,而且是普遍需要修复的问题,自然是放在~/.bashrc中自动配置最合适啦。

    综合上面两点说明,我只需要在自己的~/.basrhrc中添加如下两个配置,就能实现本地虚拟机共享剪切板功能:
    export DISPLAY=:0 # 将Xserver重定向到本地
    xhost + > /dev/null # 授权其他用户可以使用本地的Xserver以保证系统剪切板在sudo操作使也能正常使用

    当然,这个简化的方法只是避免了额外在Win10上启动一个Xserver的操作,第一个方法中的3、4步骤配置还是建议保持的。

    好了, 通过上面的简单的配置,现在就已经可以愉快的在vim、sudo vim中使用使用共享剪切板板了。

    enjoy it!

    展开全文
  • ​ virtualbox 设置共享剪切板

    千次阅读 2018-02-12 14:49:20
    1. 设置->高级->共享剪切板 双向,拖拽 双向 2. 虚拟机设置-存储-控制器SATA-勾选”使用主机输入输出(I/O)缓存” 3. 存储-控制器SATA-点击*.vdi-勾选”固态驱动器” 4. 启动虚拟机->左上角divices->insert ...


    1. 设置->高级->共享剪切板 双向,拖拽 双向
    2. 虚拟机设置-存储-控制器SATA-勾选”使用主机输入输出(I/O)缓存”
    3. 存储-控制器SATA-点击*.vdi-勾选”固态驱动器”
    4. 启动虚拟机->左上角divices->insert additional …
    5. 重启虚拟机

    展开全文
  • 其实超简单 设备->添加增强功能->运行 输入密码 然后 设备->共享剪切板->双向 ok

    其实超简单
    设备->添加增强功能->运行
    输入密码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    然后
    设备->共享剪切板->双向
    ok

    展开全文
  • mac emacs 共享剪切板

    2013-01-20 22:44:00
    mac emacs 共享剪切板 使用 bpcopy 和bppaste 替代剪切 x-clipborad elisp code : ;;osx should using pbpaste and pbcopy to share clipboard (defun copy-from-osx () (shell-comm...
  • WIN10共享剪切板

    2021-06-30 17:13:34
    WIN10共享剪切板应用背景WIN10自带的共享剪切板Ditto共享剪切板的神共享文件夹sharemouse共享键鼠的神 应用背景 无论实在本科还是在研究生阶段(尤其是研究生阶段),往往是我们拥有一台个人笔记本电脑,实验室里也...
  • 昨天突然就没办法共享剪切板了(之前可以!) 尝试卸载VMwaretools后手动重安,还是不行,甚至一度把虚拟机的输入都搞蹦了(键盘无法操控虚拟机),只能重安系统。 尝试安装open-vm-tools ,安好重启后竟然还是不得...
  • vnc viewer共享剪切板

    2021-03-03 12:44:01
    通过vnc viewer连接远程桌面的时候,有时候在远程电脑运行程序出错...需要安装一下autocutsel这个工具并启用就可以共享远程桌面的剪切板到自己电脑了。 1.安装:sudo apt install autocutsel 2.启用:autocutsel ...
  • 由于virtualbox比较轻量,而且开源,所以在安装虚拟机的时候选择了virtualbox,而没有使用vmware,但是virtual轻量的同时也有一系列的问题,比如复制粘贴,文件拖拽不生效,折腾了好久,目前解决了剪切板共享,从主机...
  • 剪切板共享 这个挺重要的,否则每次右键菜单复制粘贴会奔溃的。 在用户设置中添加: "vim.useSystemClipboard": true, 找不到用户设置? F1 搜setting 光标的变化 我觉得这个也重要,毕竟在vscode中,状态栏...
  • 版权声明:本文为博主原创...4、配置共享剪贴 5、重启 经过以上4步,如果顺利的话我们只需重启就可以了,下面是实验结果:(重启后) 首先在linux的共享目录下新建一个文件: 然后 我们在windows的共享文件夹查看:
  • 出现原因: 本地剪切文件向服务器粘贴,发现没有粘贴内容 (服务器端执行) 1、打开任务管理器,找到rdpclip.exe 结束任务 2、任务管理器面板,①文件 ②新建任务 ③输入rdpclip ④运行 转载于:...
  • 以前都可以,今天突然不可以了。搞了半天没有搞明白。 中文描述啥也收不出来,后面用英文终于看到了解决方案。 贴在这里帮助大家: Open to Chrome settings and search for “Clipboard” Select “Site Settings...
  • 出现原因: 本地剪切文件向服务器粘贴,发现没有粘贴内容 (服务器端执行) 1、打开任务管理器,找到rdpclip.exe 结束任务 2、任务管理器面板,①文件 ②新建任务 ③输入rdpclip ④运行 ...
  • 在虚拟机的高级属性中添加列isolation.tools.copy.disable FALSEisolation.tools.paste.disable FALSE后附图片说明 转载于:https://blog.51cto.com/88355291/1868797...
  • 直接导致无法复制文件、复制文本等。而虚拟机开个VS code就够慢了,实在是需要与宿主机更好的交互。 这是本来不应该发生的情况,一般可能是: 虚拟机系统没装VMware Tools VMware对该虚拟机的设置中未开启 ...
  • 2. 剪切板共享也失效了 分析问题:  1. 其实以上问题是同一个问题,当不能复制文件的时候,剪切板也就失效了 2. 是不是因为某个设置,让vmware tools失效 3. 是不是版本兼容问题,导致问题的出现 开始排查...
  • if has('unix')else set clipboard+=unnamedendif
  • VMware 安装了Ubuntu之后,在正常安装了VMware tools后,仍然不能正常的在Ubuntu与物理机之间自由的切换,每次都要按下ctrl+Alt,而且鼠标指针会经常性的离奇的失灵 解决方法为:安装xserver-xorg-input-vmmouse ...
  • 1.解决VMware workstation与主机的粘贴、复制、文件拖拽问题。 2.解决VMware workstations中Ubuntu16.04不能最大化屏幕的问题。 解决这两个问题只需要输入以下命令。 sudo apt-get autoremove open-vm-tools ...
  • 2.共享剪切板: https://blog.csdn.net/teacher20133/article/details/54601816 注意,博客的最后还说了解压+执行相关指令后还要重启,我这里再强调三遍: 一定要重启!一定要重启!一定要重启!
  • Windows下多台电脑共享剪切板的方法

    千次阅读 2012-03-05 20:52:56
    转自于 http://www.microsoft.com/china/MSDN/library/WebServices/WebServices/WebServices.mspx?mfr=true
  • 第一步: 安装VMware tools, 安装方法根据自己情况自行搜索(不同情况安装方法不一样) 第二步: 在终端依次执行以下命令 sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools ...
  • 一般情况下,安装完 VirtualBox 的增强包后,虚拟机操作系统就能自动地全屏显示,还能支持虚拟机系统和主机系统间的剪贴板共享等比较实用的功能。 若安装了 VirtualBox 自带的功能增强包重启后还是无法设置为 1024...
  • 共享鼠标剪切板

    2017-11-23 20:28:22
    共享鼠标剪切板 让你的鼠标在两台电脑间跳跃,实现无缝连接

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,591
精华内容 5,036
关键字:

共享剪切板