854611230基于JAVA的飞鸽传书系统设计.doc

上传人:仙人指路1688 文档编号:2386777 上传时间:2023-02-17 格式:DOC 页数:35 大小:511KB
返回 下载 相关 举报
854611230基于JAVA的飞鸽传书系统设计.doc_第1页
第1页 / 共35页
854611230基于JAVA的飞鸽传书系统设计.doc_第2页
第2页 / 共35页
854611230基于JAVA的飞鸽传书系统设计.doc_第3页
第3页 / 共35页
854611230基于JAVA的飞鸽传书系统设计.doc_第4页
第4页 / 共35页
854611230基于JAVA的飞鸽传书系统设计.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《854611230基于JAVA的飞鸽传书系统设计.doc》由会员分享,可在线阅读,更多相关《854611230基于JAVA的飞鸽传书系统设计.doc(35页珍藏版)》请在三一办公上搜索。

1、目 录1 绪论. 11.1本程序的开发背景. 11.2开发环境. 11.3 Java语言.11.4 关于Eclipse. 22 程序结构和设计思想. 42.1本文解决的主要技术问题. 42.2程序设计结构. 42.3程序设计思想. 53 程序分析和具体实现. 73.1目录选择器. 73.2重要图形界面模块的实现. 103.3任务栏托盘图标和任务栏弹出对话框. 173.4信息收发和文件传输的实现. 213.5使用外部程序包. 283.6发布程序. 331 绪论1.1 本软件的开发背景当今,是一个信息高度发达的时代,计算机无疑已经成为网络通信的主角,生活节奏的加快,使得人们对通信速度的要求越来越高

2、。对于在局域网内的计算机之间的数据交互,尤其是文件传输,通常,人们习惯于通过借助于移动存储介质,采取重复拷贝的方式来实现。这种传统文件传输方式存在诸多缺点,比如:1.消耗时间长,反复拔插存储介质过程繁琐;2.文件交互频繁,加速了计算机病毒的传播;3.虽然可以通过操作系统实现在局域网内的数据共享,但终因操作困难而使人们望而却步。在如此多困难之下,人们不禁会考虑,能不能通过软件来实现计算机之间的数据交互?答案是肯定的。本程序将针对这些问题进行设计。1.2 开发环境操作系统:Microsoft Windows XP程序语言:Java 2开 发 包:Java(TM) 2 Standard Editio

3、n (6.0)开发平台:Eclipse 3.0+Swing Designer+JRE6.01.3 Java语言Java平台演进到Java2后,分别针对不同领域的需求被分成三个版本,亦即J2EE、J2SE、J2ME。本程序使用J2SE。J2SE是Java的标准版本 (Java2 Standard Edition), 定位在客户端,主要用于桌面应用软件的编程。J2SE 包含那些构成Java语言核心类库。Java语言区别于其它编程语言的特点主要有: (1)平台无关性(2)安全性 (3)面向对象(4)分布式(5)键壮性本程序中,突出体现了Java语言的面向对象编程的特点,将对象实例化的模式贯穿到了程序

4、设计的始终,而且严格按照Java语言的跨平台特性设计程序,完全摆脱了windows操作系统的束缚。1.4 关于EclipseEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具JDK。虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Ecli

5、pse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。Eclipse 是一个开放源代码的、

6、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。图1-1为Eclipse3.0的编程界面。图1-1 Eclipse3.0的编程界面2 程序结构和设计思想2.1 本程序需要解决的主要技术问题1.提供友好的用户界面2.实现信息收发3.实现文件传输和文件夹传输4.为程序添加系统托盘图标5.保存用户设置信息2.2 程序设计结构本程序按照功能可分为两个层:界面层和网络通信层。其中界面层主要采用Java Swing编程技术编写用户界面,网络通信层采用Java Socket技术编写数据交互程序。随程序的容量不断扩大,在同一个目录下存放所有的代码和执行文

7、件,显得十分混乱,加大了不必要的工作量。因此,为了方便代码和其他资源文件的管理,本程序将所有的代码文件按功能分为一下几个功能包,它们实现的功能分别为:networker包:构建本程序的主窗体和系统托盘图标networker.about包: 提供用户帮助信息,介绍程序设计的相关信息ponent包: 包含程序设计中几个重要的自定义功能组件networker.directorychooser包: 实现目录选取对话框networker.panels包: 包含了主面板设计中需要用到的区域面板networker.panels.filepane包: 用于创建主面板中的文件发送区networker.syste

8、m包:完成本程序网络通信networker.taskbardialog包:构建任务栏弹出对话框2.3 程序设计思想网络编程的基本模型就是客户机到服务器模型,简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置。并去建立两者之间的联系,然后完成数据的通讯。这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。目前,在互联网上比较常见的聊天软件通常都将程序分成两个部分使用,即客户机程序和服务器程序。客户机程序在网上发布供用户使用而服务器程序则只供服务器使用,一般不公开。采用这种模式可以方便管理员对所有用户进行管理,但它必须单独提供一台计算

9、机作为服务器。而对于在局域网内使用的聊天软件,由于计算机的数量有限,而且计算机之间的服务关系经常变化或者根本没有服务关系,采用这种模式就显得力不从心了。所以,综合考虑上述因素,本程序在服务关系上做了作了一个新的设计,就是将客户机程序和服务器程序绑定在同一个软件上。当程序启动时,服务器程序监听各自端口,只负责接受来自客户机的信息并向客户机发送文件,客户机程序只负责向服务器发送信息并接受来自服务器的文件。Java对C/S模型的支持有很多种API,本程序中运用的Java Socket编程包含两个方面:一是基于UDP协议的Java DatagramSocket和Java DatagramPacket,

10、二是基于TCP/IP协议的Java Socket和Java ServerSocket。Java DatagramSocket/DatagramPacket是包中用于UDP通信协议的类,其中DatagramSocket称为报文套接字,主要用于创建UDP通信中的报文套接字并发送报文,DatagramPacket称为数据报,主要用于装载用户即将发送的报文。Java中运用这两个类进行UDP通信,实现快速的不可靠的简单数据传输。本程序中收发用户消息和系统消息的工作都由它们来完成。Java Socket/ServerSocket是包中用于TCP/IP通信协议的类,其中Socket称为客户机套接字,用于创建

11、客户机程序,ServerSocket称为服务器套接字,用于创建服务器。Java中运用这两个类进行TCP/IP通信,实现面向数据链接的可靠数据传输,本程序中收发文件(文件夹)都是由这两个类来完成的。由于计算机之间利用Java Socket进行的信息收发和文件传输事先是没有约定,要完成这些工作必须在程序中制定一个协议。本程序采用发送命令字的方式通知计算机完成相应工作,具体实现本文将在后面的章节中作具体介绍。3 程序分析和具体实现3.1 目录选择器在当前所有版本的JDK中,都没有实现过windows风格的目录选取对话框,本程序考虑到保存文件的需要,重新定义了一个类似功能的目录选取对话框,并具有跨平台

12、特性。其效果图如图3-1:图3-1 目录选择器实现目录选择器的类文件配置在networker.directorychooser包中,其中包含3个类:(1)TreeCell类TreeCell类封装了一个java.io.File类,并分别通过4个方法返回了该File对象的文件名、文件图标、文件路径、File类本身。其构造函数如下:public TreeCell(File f)(2)DCTreeCellRenderer类DCTreeCellRenderer类重构了树形组件的节点UI,它继承自javax.swing.JPanel,并实现了TreeCellRenderer接口,重写方法:public C

13、omponent getTreeCellRendererComponent(JTree tree,Object o,boolean sel,boolean ex,boolean leaf, int row,boolean focus)(3)DirectoryChooser类DirectoryChooser实现了目录选取对话框的主体,它继承自javax.swing.JDialog类,并实现了接口ActionListener,TreeExpansionListener,其中最重要的组件是树形组件,它把文件系统所有目录以树形结构转化为节点显示出来,用户可以很方便的在树形组件中浏览到文件系统中的所有目

14、录。在DirectoryChooser中有几个方法是十分重要的,它们分别是:树选择事件:public void valueChanged(TreeSelectionEvent tse)树展开事件:public void treeExpanded(TreeExpansionEvent ee)初始化桌面:public void initDesk()为父节点添加子节点:public void addChild(DefaultMutableTreeNode node)这里重点指出显示对话框并获取用户选择的路径:程序为DirectoryChooser类定义了两个静态变量/判断用户是否点了“确定”按钮pu

15、blic static boolean CHOOSE_FLAG=false;/提取用户选取的路径public static String DIRECTORY_PATH=null;显示对话框时,界面的阻塞状态,等待用户的相关操作,当用户点击“取消”或者是对话框关闭按钮时,CHOOSE_FLAG的值设为false,除了对话框退出以外,不进行任何操作,反之当用户点击“确定”按钮时,设为true,DIRECTORY_PATH的值被设定为相应的路径值,实现语句如下:显示对话框:public boolean ShowDialog()setVisible(true);return CHOOSE_FLAG;调

16、用方法:DirectoryChooser dialog = new DirectoryChooser(frame,title);boolean f=dialog.ShowDialog();if(f) /获取选择路径System.out.println(DirectoryChooser.DIRECTORY_PATH);else ;/什么都不做3.2 重要图形界面模块的实现面向对象编程的最大好处就在于将一个大型的程序分成若干个模块来实现,而且模块之间的实现过程一般不会互相影响,哪个模块出了问题只需修改它本身,而不用改动其他模块。本程序也毫不例外的运用了面向对象编程的这种特点,下面将一一介绍本程序中

17、用到的程序模块。3.2.1 在线用户列表在线用户列表用于显示局域网内其他在线用户,它位于主面板的左侧,如图3-2所示:图3-2 在线用户列表构建在线用户列表用到了ponents包中的UserItem类、UserList类、MyRenderer类和neworker.panels包中的UserPane类。它们的实现方法分别为:UserItem类UserItem类是为构建在线用户列表而设计的类,用来存储在线用户信息(用户名,IP地址,用户头像地址),其构造函数为:public UserItem (String name,String ipaddress,String imagepath) /name

18、载入用户名,ipaddress,imagepathUserList类UserList类是用来存储在线用户对象的列表类,它继承自javax.swing.JList。在UserList还有很多对用户对象进行操作的方法:添加本地用户对象:public void addMe()添加用户:public void addUser(UserItem item)删除指定用户:public void removeUser(String username) 获取选中用户的用户名:public String getSelectedUserName() 获取所有在线用户的IP地址:public String getA

19、llIPs()删除所有用户对象: public void removeAllUser() 判断用户是否已在用户列表中:public boolean exists(UserItem item) MyRenderer类MyRenderer类重构了列表类的列表项,使更复杂的信息能在JList中显示,它继承自javax.swing.JPanel,并实现了javax.swing. ListCellRenderer接口,重写方法:public Component getListCellRendererComponent(JList list, Object o, int index, boolean is

20、Selected, boolean hasFocus)构建MyRenderer的意义是十分重大的,JList在默认情况下是不支持显示多行文本和图片的,只有通过构建一个类,也就是像MyRenderer这样的类,并让JList的对象调用方法:setCellRenderer(new MyRenderer()来实现。UserPane类UserPane类继承自javax.swing.JPanel类,是装载UserList的类,它的构造函数为: public UserPane(UserList list)3.2.2 文件发送区文件发送区用于存放即将发送的文件列表并发送文件和文件夹,它位于程序主面板的中上部

21、,其效果图如图3-3:图3-3 文件发送区文件发送区由networker.panels.filepane包实现,它包含LabelRenderer、FileIcon、FileTable、MScroll和FilePane五个类。在文件发送区,用户可以通过两种方式向文件发送区添加发送对象:1.通过菜单栏或右键菜单中“传送文件”、“传送文件夹”菜单项或通过工具栏中相应图标按钮打开文件或文件夹选择器;2.直接在windows资源管理器中将指定文件拖拽至文件发送区。filepane包主要围绕javax.swing.JTable表格类进行设计。LabelRenderer类LabelRenderer类继承了j

22、avax.swing.JLabel类,实现了javax.swing.table. TableCellRenderer接口,从而改写了JTabel表格的单元格,实现了带图标的单元格。重写方法:public Component getTableCellRendererComponent(JTable t,Object value, boolean isSelected,boolean hasFocus,int row,int col)FileIcon类FileIcon类封装了一个File类对象,并通过一系列方法获取该File对象的文件名、文件路径、文件图标。这里重点提出javax.swing.fi

23、lechooser.FileSystemView类,它是处理文件系统的一个很重要的类,在FileIcon类中使用方法:ImageIcon icon=(ImageIcon)FileSystemView.getSystemIcon(file)获取文件的系统图标。FileTable类FileTable类是filepane包中最重要的一个类,它是装载文件列表的主体。它继承了javax.swing.JTabel类,实现了接口DropTargetListener, DragGestureListener, DragSourceListener, ActionListener。这里重点讨论java swin

24、g的拖拽事件。实现组件的拖拽功能,必须让组件实现DropTargetListener, DragGestureListener, DragSourceListener接口,完成以下步骤:(1)创建DragSourceDragSource dragSource = new DragSource();dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, this);public void drop(DropTargetDropEvent dtde)(2)重写拖拽事件方法public

25、 void drop(DropTargetDropEvent dtde)Mscroll类:Mscroll类继承自javax.swing.JScrollPane, 实现DropTargetListener, DragGestureListener, DragSourceListener接口,用于给FileTable添加滚动窗格,为完善FileTable的拖拽功能而设计。在初始状态下,FileTable中没有对象,这时拖拽功能不能依靠FileTable来实现,必须借助一个载体来实现拖拽功能,将发送对象添加入文件发送区,而给FileTable添加滚动窗格的JScrollPane则是最佳选择,MScr

26、oll则由此而产生。FilePane类:FilePane类将文件发送区的最终形式添加到程序主面板中,用户可以在在线用户列表中选择一个在线用户点击“发送”按钮发送文件,当欲发送对象不在在线用户列表中时,可以点击“发送至”按钮,在弹出的输入框中输入对方的IP地址,即可发送文件。发送过程涉及到socket编程,本文在后面的篇幅中再作介绍。3.2.3 文本发送区文本发送区用于发送用户自己输入的信息,它位于程序主面板的中下部,由networker.panels包中的SendMsgPane类实现,其效果图如图3-4所示:图3-4 文本发送区SendMsgPane类继承自javax.swing.JPanel

27、,并实现了ActionListener,ItemListener接口。它是程序中供用户发送信息的主要模块,其中心面板上是一个javax.swing.JTextArea文本域,操作和显示相对简单快捷,这里重点讲右键菜单的用法。(1)右键弹出菜单的构造函数JPopupMenu pop=new JPopupMenu();(2)添加菜单项:pop.add(new JMenuItem();(3)为使用右键菜单的组件添加鼠标事件:component.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent evt) if

28、(evt.isPopupTrigger()pop.show(evt.getComponent(),evt.getX(), evt.getY();public void mouseReleased(MouseEvent evt) if (evt.isPopupTrigger() pop.show(evt.getComponent(),evt.getX(), evt.getY(););各菜单项和按钮的功能及相关函数:复制:textarea.copy();剪切:textarea.cut();粘贴:textarea.paste();全选:textarea.selectedAll();清空:textar

29、ea.setText(“”);删除:这个操作没有给定方法,用自定义函数实现:JTextArea area=new JTextArea();int start=area.getSelectionStart(), end=area.getSelectionEnd();String all=area.getText();before=all.substring(0,start);after=all.substring(end,all.length();area.setText(before+after);area.setFocusable(true);“发送”、“发送至”按钮的功能同文件发送区类似,

30、此外文本发送区支持群发功能,当点击“群发”按钮时,程序会给每个在线用户发送同一个信息。发送过程同样涉及到socket编程,本文在后面的章节中作进一步的介绍。3.2.4超链接标签本文在3.2小节中介绍networker.about.JavaPage类时,曾经提到过超级链接标签,它用于实现类似网页上超级链接功能,点击它,可以利用本地浏览器打开一个网页。ponents.LinkLabel类实现了这种标签,它继承自javax.swing.JLabel,并添加了鼠标事件,重写如下方法:public void mouseEntered(MouseEvent e)public void mouseExite

31、d(MouseEvent e)public void mouseClicked(MouseEvent e)利用本地浏览器打开网页是JDK6.0中提供的新功能,其基本方法为:Desktop.getDesktop().browse(new URI(new URL(url);其中url为将要打开网页的网址;3.3 任务栏托盘图标和任务栏弹出对话框3.3.1 任务栏托盘图标Java实现系统托盘图标是sun公司在JDK6.0中新添加功能,它使用的api分别是位于java.awt包中的SystemTray和TrayIcon,其实现方式如下:SystemTray tray = SystemTray.getS

32、ystemTray();TrayIcon icon=new TrayIcon(image,tooltiptext,menu);tray.add(icon);其中,image是一个装载图片的Image,menu是一个菜单类PopupMenu;而tooltiptext则是一个字符串String,当鼠标放在托盘图标上时,托盘图标会弹出一个解释框显示tooltiptext,菜单中的菜单项功能与主窗体的相应菜单项功能一致。本程序中的networker.TaskBarIcon类利用了这些api为程序添加了一个托盘图标,其效果图如图3-5:图3-5 托盘图标3.3.2 任务栏弹出对话框有经验的朋友都知道,我

33、们在使用很多软件的过程中,经常会看到任务栏托盘的上方会弹出一些提示用户的对话框,比如:卡巴斯基在检测到计算机有病毒威胁时,会弹出对话框提示用户是否清除病毒;腾讯QQ报道一些小型新闻也会从任务栏弹出对话框提示用户查看;web迅雷在下载完文件或下载失败时,都会使用相同的方式提示用户。由于它不会占用用户太多的屏幕分量,而又达到了提示用户的效果,这种方式得到了越来越多用户和程序员的认可。然而在java的世界里,考虑到程序的跨平台性,目前在所有版本JDK的类库中都没有提供实现这种效果的API,幸运的是,Java Swing的设计十分巧妙,程序员可以利用其高度的可扩展性构建符合要求的功能模块。本程序在ne

34、tworker.taskbardialog包中就利用Java中已有的API实现了这种功能,效果图如图3-6:图3-6 任务栏弹出对话框TaskBarDialog类TaskBarDialog类是完成此功能的基类,它继承自javax.swing.Jdialog类,并实现了Runnable接口,程序启动时开通一个线程,通过dialog.setBounds方法不断改变窗体的大小和位置,当窗体达到目标大小和位置时,并使用方法SwingUtilities.updateComponentTreeUI(this) 刷新界面,具体操作步骤如下:(1)首先获取屏幕大小Toolkit t=Toolkit.getDe

35、faultToolkit();Dimension screen=t.getScreenSize();int w=(int)screen.getWidth();int h=(int)screen.getHeight();(2)然后获取通过构造函数传入的参数(窗体最终大小和任务栏宽度)public TaskBarDialog(int width,int height,int TaskBar)(3)开通线程while(flag) setBounds(w-width,h-(TaskBar+i),width,i); i+; if(iheight) flag=false;SwingUtilities.up

36、dateComponentTreeUI(this);(4)显示对话框public void showDialog() setVisible(true);Thread t=new Thread(this);t.start(); ShowFileDialog类和DefaultSavaPath类ShowFileDialog类继承了TaskBarDialog类,并实现了接口java.awt.event. ActionListener。它最终实现了从任务栏托盘弹出提示对话框的动态效果,对话框弹出后,用户可以根据提示进行保存文件的操作,从效果图上,可以清楚的看到,收到文件的文件名和文件大小,以及供用户操作

37、的3个按钮“保存到”、“确定”、“拒绝”,当用户点击“拒绝”时,对话框退出,程序自动发送拒绝消息至文件发送方,通知对方取消操作;当用户点击“保存到”按钮时,会弹出目录选择对话框,供用户选择一个保存目录,并通知发送方打开服务器准备发送文件;当用户点击“确定”按钮时,程序直接将文件保存在用户设定的默认保存目录,其中文件默认保存目录可以通过在主面板“设置”菜单中的“设置默认存取目录”菜单项来设置,taskbardialog包中的DefaultSavaPath类就是用来完成这个功能的。3.4 信息收发和文件传输的实现networker.system包是完成本程序网络通信的中心包,它工作在计算机后台,不

38、与用户进行交互,但计算机之间的数据交互都是由它来完成的,是一个功能巨大默默无闻的net worker。3.4.1 自定义的Sys和SystemInfo类networker.system包的基本功能都是由Sys和SystemInfo类提供的,这两个类中的方法都是静态的,程序调用这些方法只需直接利用类名而不用构造它们的对象,大大简化了本程序网络通信设计的过程。Sys类中提供的方法有:获取系统时间public static String getDate()获取文件大小常规表达public static String getFileLengthExpress(File f)获取相对目录public s

39、tatic String getRelativePath(String a,String p)获取文件或文件夹总大小public static long getLength(File f)获取局域网所有用户的IP地址public static String getUserIPs()SystemInfo类主要用于保存程序在使用过程中的配置信息,其中大量使用了外部程序包jdom.jar中java操作xml文档的api,调用过程在后面的章节中再作详细介绍。SystemInfo类中提供的方法有:设置和获取图像路径public static void setImagePath(String imagep

40、ath)public static String getImagePath()设置和获取用户名public static void setMyName(String name)public static String getMyName()设置和获取皮肤public static void setLookAndFeel(String laf)public static String getLookAndFeel()设置默认存取路径public static void setDefaultSavePath(String savepath)public static String getDefau

41、ltSavePath()添加和获取好友列表public static void setUserList(String list)public static String getUserList()读取帮助文档public static String getHelpDoc(String str)3.4.2 数据交互基本思想和工作原理1.使用网络通信协议考虑到局域网发生错误的可能性很低,本程序中的所有的信息收发工作都采用UDP通信协议,原因是UDP通信速度快,弥补了java程序运行速度的不足;而所有的文件传输工作都采用TCP/IP协议,因为文件传输要考虑到安全性,必须保证计算机之间建立连接之后才能

42、进行文件传输。2.客户端和服务器模式(C/S)由于本程序工作在局域网内数量有限的若干台计算机之间,像目前比较流行的网络软件(比如QQ,MSN等)一样使用特定服务器的可能性不大,所以本程序必须考虑各终端的C/S通信机制。既然不能使用特定服务器,就要实现网络通信,那么每台计算机终端都必须有C/S程序,也就是说必须在同一台计算机上同时运行C/S程序。为了保证计算机之间通信不致混乱,本程序合理的安排了C/S程序的任务,即:程序启动时,服务器程序监听各自端口,只负责接受来自客户机的信息并向客户机发送文件,客户机程序只负责向服务器发送信息并接受来自服务器的文件,如此一来,客户机和服务器各司其职,各尽其责,

43、使网络通信有条不紊,并且大大简化了程序设计的过程。3.使用命令字由于计算机之间进行互操作,不可避免的要使用到各种各样的操作命令,为了区分它们以用户信息,程序中设定了一系列的命令字,如下:首先定义一系列静态整形数字和分隔符:private static int NETWORKER_CONNECT=0, NETWORKER_EXIT=1, NETWORKER_MESSAGE=2, NETWORKER_FILE=3, NETWORKER_DIRECTORY=4, NETWORKER_FILE_YES=5, NETWORKER_FILE_NO=6, NETWORKER_DIRECTORY_YES=7,

44、 NETWORKER_DIRECTORY_NO=8, NETWORKER_JUMP=10;public static String SEP=|;然后设定命令字:(1)扫描用户NETWORKER_CONNECT|本地用户名|本地IP|本地用户头像地址 (2)退出连接 NETWORKER_EXIT|本地用户名|本地IP (3)发送消息 NETWORKER_MESSAGE|本地用户名|本地IP|当前时间|消息内容(4)发送文件提示 NETWORKER_FILE|本地用户名|本地IP|当前时间|文件名|文件大小描述|文件大小|文件本地路径(5)发送文件夹提示 NETWORKER_FILE|本地用户名|本地IP|当前时间|文件夹名|文件夹大小描述|文件夹大|总文件数 (6)回复命令 YES_OR_NO|本地用户名|本地IP|文件外地路径(7)振动对话框 NETWORKER_JUMP|本地用户名|本地IP3.4.3 数据交互过程在了解数据交互基本思想和工作原理之后,再来看看java是如何将这些数据发送出去的。networker.system包中提供了UDPClient、UDPSe

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号