IP协议的网络监听程序设计课程设计_第1页
IP协议的网络监听程序设计课程设计_第2页
IP协议的网络监听程序设计课程设计_第3页
IP协议的网络监听程序设计课程设计_第4页
IP协议的网络监听程序设计课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、长沙理工大学城南学院计算机网络课程设计报告 基于TCP/IP协议的网络监听程序设计林慧娟学 院 城南学院 专 业 通信工程 班 级 通信0902 学 号 200985250205 学生姓名 林慧娟 指导教师 龙际珍 课程成绩 完成日期 2012年7月5日 基于TCP/IP协议的网络监听程序设计学生姓名:林慧娟 指导老师:龙际珍摘 要 本课程设计主要是一种利用计算机网络接口监视网络数据运行、截获网络数据的工具,可用于网络管理、网络协议分析以及网络安全等众多方面。在课程设计中,系统开发平台为Windows 2000,以Java6.0为平台设计并实现一款基于Windows环境下的网络监听器。按照软件

2、工程的思想进行设计、实现和测试。对于该网络监听器的总体架构设计,大体上分为两个部分:其一为构造界面,其二为在其界面条件下编程。然后再根据所编程序进行运行测试。关键词 Java语言;TCP/IP;套接字;局域网 1 引言 课题背景随着计算机技术的发展,网络已日益成为生活中不可或缺的工具,但随之而来的非法入侵也一直威胁着计算机网络系统的安全。由于局域网中采用广播方式,因此,在某个广播域中可以监听到所有的信息包。而黑客通过对信息包进行分析,就能获取局域网上传输的一些重要信息。事实上,很多黑客入侵时都把局域网扫描和监听作为其最基本的步骤和手段,原因是想用这种方法获取想要的密码等信息。但另一方面,我们对

3、黑客入侵活动和其它网络犯罪进行侦查、取证时,也可以使用网络监听技术来获取必要的信息。因此,了解以太网监听技术的原理、实现方法和防范措施就显得尤为重要1。监听器主要运行在C/S模式下, 截获其TCP应用层的数据内容,并把发送端所传信息体现在监听器中,而接受端也返还一个信息给发送端,从而完成监听工作。 课程设计目的本课程设计的目的是基于JAVA语言实现一个网络监听器程序,采用TCP/IP原理以及套字节编程原理,达到捕获网络中的数据包并对其进行分析的目的。在设计过程中,主要采用Eclipse编程环境,使用JAVA语言进行程序的编写,程序通过调试运行并且经过完善后,初步实现了设计的目标,能很好地在局域

4、网环境实现网络监听的功能。 课程设计基本任务(1)熟悉TCP/IP协议以及套节字编程原理;(2)熟悉Eclipse编程环境及Socket/ServerSocket编程方法;(3)理解C/S工作模式;(4)实现一个网络监听程序。2 需求分析网络监听是一种监视网络状态、数据流程以及网络上信息传输的 HYPERLINK :/baike.baidu /view/1251417.htm t _blank 管理工具,它可以将网络界面设定成监听模式,并且可以截获网络上所传输的信息。也就是说,当 HYPERLINK :/baike.baidu /view/1960.htm t _blank 黑客登录网络主机并

5、取得超级用户权限后,若要登录其它主机,使用网络监听便可以有效地截获网络上的数据,这是黑客使用最好的方法。但是网络监听只能应用于连接同一网段的主机,通常被用来获取用户密码等。总体上看,网络信息安全处于被动的封堵漏洞状态,从上到下普遍存在侥幸心理,没有形成主动防范、积极应对的全民意识,更无法从根本上提高网络监测、防护、响应、恢复和抗击能力。近年来,国家和各级职能部门在信息安全方面已做了大量努力,但就范围、影响和效果来讲,迄今所采取的信息安全保护措施和有关计划还不能从根本上解决目前的被动局面,整个信息安全系统在迅速反应、快速行动和预警防范等主要方面,缺少方向感、敏感度和应对能力。因此,监听器必将广泛

6、得应用在数据分析方面。3 相关原理分析3.1 Java背景Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新2。作为一种程序设计语言 ,它简单、面向对象、不依赖于机器的结构、具有可移植性、鲁棒性、安全性、并且提供了并发的机制、具有很高的性能。其次 ,它最

7、大限度地利用了网络 ,Java的小应用程序 (applet)可在网络上传输而不受 CPU和环境的限制。另外 ,Java还提供了丰富的类库 ,使程序设计者可以很方便地建立自己的系统。3.2 TCP/IP协议详解Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下

8、一层所提供的网络来完成自己的需求。3.3 TCP传输原理 TCP协议在IP协议之上。与IP协议提供不可靠传输服务不同的是,TCP协议为其上的应用层提供了一种可靠传输服务。这种服务的特点是:可靠、全双工、流式和无结构传输。它是通过一下步骤来实现可靠传输的:TCP协议使用了一个叫积极确认和重发送(positive acknowledgement with retransmission)的技术来实现这一点的。接收者在收到发送者发送的数据后,必须发送一个相应的确认(ACK)消息,表示它已经收到了数据。发送者保存发送的数据的记录,在发送下一个数据之前,等待这个数据的确认消息。在它发送这个数据的同时,还启

9、动了一个记时器。如果在一定时间之内,没有接收到确认消息,就认为是这个数据在传送时丢失了,接着,就会重新发送这个数据。33.4局域网监听的基本原理 根据IEEE的描述,局域网技术是把分散在一个建筑物或相邻几个建筑物中的计算机、终端、大容量存储器的外围设备、控制器、显示器、以及为连接其它网络而使用的网络连接器等相互连接起来,以很高的速度进行通讯的手段。局域网具有设备共享、信息共享、可进行高速数据通讯和多媒体信息通信、分布式处理、具有较高的兼容性和安全性等基本功能和特点。目前局域网主要用于办公室自动化和校园教学及管理,一般可根据具体情况采用总线形、环形、树形及星形的拓扑结构。3.5 在局域网实现监听

10、的基本原理 对于目前很流行的以太网协议,其工作方式是:将要发送的数据包发往连接在一起的所有主机,包中包含着应该接收数据包主机的正确地址,只有与数据包中目标地址一致的那台主机才能接收。但是,当主机工作监听模式下,无论数据包中的目标地址是什么,主机都将接收(当然只能监听经过自己网络接口的那些包)。 在因特网上有很多使用以太网协议的局域网,许多主机通过电缆、集线器连在一起。当同一网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目的主机。但这种数据包不能在IP层直接发送,必须从TCP/IP协议1的IP层交给网络接口,也就是数据链路层,而网络接口是不会识别IP地址的,因此在网络接口

11、数据包又增加了一部分以太帧头的信息。在帧头中有两个域,分别为只有网络接口才能识别的源主机和目的主机的物理地址,这是一个与IP地址相对应的48位的地址。传输数据时,包含物理地址的帧从网络接口(网卡)发送到物理的线路上,如果局域网是由一条粗缆或细缆连接而成,则数字信号在电缆上传输,能够到达线路上的每一台主机。当使用集线器时,由集线器再发向连接在集线器上的每一条线路,数字信号也能到达连接在集线器上的每一台主机。当数字信号到达一台主机的网络接口时,正常情况下,网络接口读入数据帧,进行检查,如果数据帧中携带的物理地址是自己的或者是广播地址,则将数据帧交给上层协议软件,也就是IP层软件,否则就将这个帧丢弃

12、。对于每一个到达网络接口的数据帧,都要进行这个过程。然而,当主机工作在监听模式下,所有的数据帧都将被交给上层协议软件处理。而且,当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网时,如果一台主机处于监听模式下,它还能接收到发向与自己不在同一子网(使用了不同的掩码、IP地址和网关)的主机的数据包。也就是说,在同一条物理信道上传输的所有信息都可以被接收到。另外,现在网络中使用的大部分协议都是很早设计的,许多协议的实现都是基于一种非常友好的、通信的双方充分信任的基础之上,许多信息以明文发送。因此,如果用户的账户名和口令等信息也以明文的方式在网上传输,而此时一个黑客或网络攻击者正在进行网络监听,只

13、要具有初步的网络和TCP/IP协议知识,便能轻易地从监听到的信息中提取出感兴趣的部分。同理,正确的使用网络监听技术也可以发现入侵并对入侵者进行追踪定位,在对网络犯罪进行侦查取证时获取有关犯罪行为的重要信息,成为打击网络犯罪的有力手段。 3.6局域网监听的简单实现 要使主机工作在监听模式下,需要向网络接口发出I/O控制命令,将其设置为监听模式。在Unix系统中,发送这些命令需要超级用户的权限。在Windows系列操作系统中,则没有这个限制。要实现网络监听,可以自己用相关的计算机语言和函数编写出功能强大的网络监听程序,也可以使用一些现成的监听软件,在很多黑客网站或从事网络安全管理的网站都有。 3.

14、7 套接字原理为了更好说明套接字编程原理,给出几个基本的套接字。 1.创建套接字socket()功能:使用前创建一个新的套接字格式:SOCKET PASCAL FAR socket(int af,int type,int procotol);参数:af: 通信发生的区域type: 要建立的套接字类型procotol: 使用的特定协议2.指定本地地址bind()功能:将套接字地址与所创建的套接字号联系起来。格式:int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);参数:s: 是由socket()调用

15、返回的并且未作连接的套接字描述符(套接字号)。其它:没有错误,bind()返回0,否则SOCKET_ERROR地址结构说明:struct sockaddr_inshort sin_family;/AF_INETu_short sin_port;/16位端口号,网络字节顺序struct in_addr sin_addr;/32位IP地址,网络字节顺序char sin_zero8;/保留3.建立套接字连接connect()和accept()功能:共同完成连接工作格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,i

16、nt namelen);SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);参数:同上4.听连接listen()功能:用于面向连接服务器,表明它愿意接收连接。格式:int PASCAL FAR listen(SOCKET s, int backlog);5.数据传输send()与recv()功能:数据的发送与接收格式:int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);int PASCAL FAR re

17、cv(SOCKET s,const char FAR * buf,int len,int flags);参数:buf:指向存有传输数据的缓冲区的指针。 6.多路复用select()功能:用来检测一个或多个套接字状态。格式:int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds, fd_set FAR * exceptfds,const struct timeval FAR * timeout);参数:readfds:指向要做读检测的指针writefds:指向要做写检测的指针exceptfds:指向要检测

18、是否出错的指针timeout:最大等待时间7.关闭套接字closesocket()功能:关闭套接字s格式:BOOL PASCAL FAR closesocket(SOCKET s);4 总体设计界面构造 利用Eclipse软件,结合编程语言,实现界面构造的编码。(1)AdiminPanel构造package comp.gui;import java.awt ponent;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.aw

19、t.event.ActionListener;import javax.swing.*;import com.briup.bean.URLInfo;import .TCPMonitorServer; public class AdminPanel extends JPanel private JLabel titleLb=new JLabel(Create a new TCP/IP Monitor.);private JLabel listenPortLb=new JLabel(Listen Port #);private JLabel hostNameLb=new JLabel(Target

20、 Hostname);private JLabel targetPortLb=new JLabel(Target Port # );private JTextField listenPortTf=new JTextField(,15);private JTextField hostNameTf=new JTextField(127.0.0.1,15);private JTextField targetPortTf=new JTextField(8080,15);private JButton addBtn=new JButton(Add);private GridBagLayout gbl=n

21、ew GridBagLayout();private GridBagConstraints gbc=new GridBagConstraints();private JTabbedPane tabbedPane;public AdminPanel(JTabbedPane tabbedPane) this.tabbedPane=tabbedPane;initComponent();private void initComponent()/步骤一:选择容器/步骤二:选择布局管理器setLayout(gbl);/步骤三:加入组件addComponent(titleLb, GridBagConstra

22、ints.REMAINDER);addComponent(listenPortLb, 1);addComponent(listenPortTf, GridBagConstraints.REMAINDER);addComponent(hostNameLb, 1);addComponent(hostNameTf, GridBagConstraints.REMAINDER);addComponent(targetPortLb, 1);addComponent(targetPortTf, GridBagConstraints.REMAINDER);addComponent(addBtn, GridBa

23、gConstraints.REMAINDER);/步骤四:加入事件处理器(new ActionListener()public void actionPerformed(ActionEvent arg0) String listenPort=listenPortTf.getText();String hostName=hostNameTf.getText();String targetPort=targetPortTf.getText();String msg=;int i=1;if(listenPort=null|listenPort.trim().length()=0) msg+=i+ +

24、 . Please input valid listen port. rn;if(hostName=null|hostName.trim().length()=0) msg+=i+ + . Please input valid hostname.rn;if(targetPort=null|targetPort.trim().length()=0) msg+=i+ + . Please input valid target port.rn;if(msg.length()0) JOptionPane.showMessageDialog(null, msg);return;try URLInfo u

25、rlInfo=new URLInfo(Integer.parseInt(listenPort),hostName,Integer.parseInt(targetPort);MonitorPanel monitorPanel=new MonitorPanel(tabbedPane,urlInfo);tabbedPane.add(monitorPanel,Port +listenPort);catch(Exception e) JOptionPane.showMessageDialog(null, e.getMessage(););private void addComponent(Compone

26、nt c, int gridwidth)gbc.gridwidth=gridwidth;gbl.setConstraints(c, gbc);add(c);其构造出来的界面如下图所示:图 主界面图 网络实现1 执行Class MonitorSend extends Thread private Socket socket;该段程序为持有想访问的Web服务器中资源的路径,比如说: /a.html或/images/logo.gif等。调用字符串函数并执行循环体如下:try cin=new BufferedReader(new InputStreamReader(socket.getInputStr

27、eam();String s=cin.readLine();这时s的内容类似于:GET /a.html /1.1。public synchronized void setFileName(String s) String str=s.split( );fileName=str1;notifyAll();2 网络实现主体函数是ServerSocket,。调用URL,对其监听端口,主机名,网络目的地址进行设定。执行catch(Exception e) JOptionPane.showMessageDialog(monitorPanel,e.getMessage();finallytryif(ser

28、verSocket!=null)serverSocket.close();catch(Exception e)public void close() tryif(serverSocket!=null)serverSocket.close();catch(Exception e)该段程序通过其循环语句的实现值来体现浏览器向web服务器提交的信息。3 用来显示Web服务器返回给浏览器的信息class MonitorReceive extends Thread private Socket socket;private MonitorSend send;public MonitorReceive(S

29、ocket socket,MonitorSend send) this.socket=socket;this.send=send;public void run() PrintStream cout=null;/ Monitor程序至浏览器的输出流BufferedInputStream sin=null;/ Web服务器至Monitor程序的输入流StringBuffer sb=new StringBuffer();/ Web服务器响应内容这样从服务器到浏览器,从浏览器到服务器。在都次循环语句执行下,监听器开始执行其工作。即截获网址,以及改次请求发送过程中的数据包。其中包括包头的信息。5 程序

30、的实现与测试5.1模型图5.1 B/S模型总体设计很简单,就是当本机想访问某个网页时,其中间放置了一个监听器。如图5.1所示。该监听器将发送端的数据包,包括其字节头等,通过监听器显示出来,而其接受网页方在受到访问后所作出的工作也将在监听器上得以体现。5.2测试步骤根据以上代码首先设计出图形界面如图52所示:图5.2软件界面如图可以看出其需要输出监听端口,目的主机名和目的端口的值。目的主机为其要访问的网址的IP地址,打个比方,如想访问 HYPERLINK :/ baidu ,则需先找到其对应的IP地址,可在运行平台由ping命令获得:如图所示:图查找访问页面地址根据以上所提供的数据,将其数值输入

31、到相应的对话框,如图所示图 输入IP地址后的图在网页中输入ost:1234 :/localhost:1542,点击port1542既可得到数据输出,如图所示:图5.5 访问网页截获其数据图从图中可以很清楚地看出其输出的数据和其输入的数据。而这其中不仅仅是包含了网址那么简单,从数据包的头,到一些具体的内容都可以显现到我们的监听器当中。因为其发送和接受的数据都被截获4,所以可以说这个程序是成功的。其功能得到了很好的发挥。若输入其网址端口后,其值不能正常显示出来,发送和接受都没有得到的话,那说明此次截获是失败的。也就是说其监听器的功能没有能够很好的体现。监听器所实现的功能就是网页与网页的互访5,而其

32、中的数据和内容将被大量的显现出来。让我们更好的看到其内容。6 结束语时间过得真快,二周的课程设计在忙碌中结束了。Java对于我而言是个极其生僻的词汇,可现在的自己却作出来一个东西。感觉不可思议。我做的是网络监听器,说实话,我根本没看到什么资料。看到其他的同学一个个都开始慢慢的动起来了,自己心里也有点着急了。我才开始慢慢的平复下自己的心情,而且也在当真正了解网络监听器的左右后,越来越觉得其有趣的地方。有一种很想学好的冲动,因为它,我很想学好Java。因为对于我而言,这感觉真是很奇妙。网络监听技术作为一种工具,总是扮演着正反两方面的角色。对于入侵者来说,最喜欢的莫过于用户的口令,通过网络监听可以很

33、容易地获得这些关键信息。而对于入侵检测和追踪者来说,网络监听技术又能够在与入侵者的斗争中发挥重要的作用。鉴于目前的网络安全现状,我们应该进一步挖掘网络监听技术的细节,从技术基础上掌握先机,才能在与入侵者的斗争中取得胜利。 最后,感谢各位同学的帮助和龙老师的悉心指导。在以后的日子里面一定努力学习,努力把Java学好。参考文献1 Stephen R.Software Engineering with Java. 北京:机械工业出版社, 20052李雷、周晓宝等. Java网络应用编程. 北京:高等教育出版社, 20043谢希仁计算机网络(第四版)M北京:电子工业出版社,20034 王大雷,高志红网

34、络编程实用教程. 北京:人民邮电出版社,20095 朱智贤,杨顶华等.JAVA技术M北京:人民邮电出版社,2000附录1:设计程序清单/程序名称: TCP montior/程序功能:网络监听,数据截获/程序 林慧娟/最后修改日期: 2012/6/29package ;import .*;import java.io.*;import javax.swing.JOptionPane;import com.briup.bean.Record;import com.briup.bean.URLInfo;import com.briup.gui.MonitorPanel;public class TC

35、PMonitorServer extends Threadprivate int listenPort;private String hostName;private int targetPort;private ServerSocket serverSocket=null;private MonitorPanel monitorPanel;public TCPMonitorServer(URLInfo urlInfo,MonitorPanel monitorPanel) this.listenPort=urlInfo.getListenPort();this.hostName=urlInfo

36、.getHostName();this.targetPort=urlInfo.getTargetPort();this.monitorPanel=monitorPanel;public void run() try serverSocket=new ServerSocket(listenPort);while(true) Socket socket=serverSocket.accept();MonitorSend send=new MonitorSend(socket);MonitorReceive receive=new MonitorReceive(socket,send);send.s

37、tart();receive.start();catch(Exception e) JOptionPane.showMessageDialog(monitorPanel,e.getMessage();finallytryif(serverSocket!=null)serverSocket.close();catch(Exception e)public void close() tryif(serverSocket!=null)serverSocket.close();catch(Exception e)/* * 用来显示浏览器提交给Web服务器的信息 * author Administrat

38、or */class MonitorSend extends Thread private Socket socket;/* * 用来持有想访问的Web服务器中资源的路径, */private String fileName;public MonitorSend(Socket socket) this.socket=socket;public void run() BufferedReader cin=null;StringBuffer sb=new StringBuffer();Record record=new Record();try cin=new BufferedReader(new

39、 InputStreamReader(socket.getInputStream();record.setRequest(s);record.setTargetHost(hostName);record.setRequestHost(socket.getInetAddress().getHostAddress();setFileName(s);sb.append(s+rn);while(s=cin.readLine()!=null)sb.append(s+rn); catch(Exception e) /JOptionPane.showMessageDialog(null, e.getMess

40、age(); finally monitorPanel.addSendContent(sb.toString(), record);tryif(cin!=null)cin.close();if(socket!=null)socket.close();catch(Exception e)public synchronized String getFileName() String temp=null;while(temp=fileName)=null) trywait();catch(Exception e)fileName=null;return temp;/从类似于GET /a.html /

41、1.1 的内容中截获出/a.html /传递给实例变量fileNamepublic synchronized void setFileName(String s) String str=s.split( );fileName=str1;notifyAll();/* * 用来显示Web服务器返回给浏览器的信息 * author Administrator */class MonitorReceive extends Thread private Socket socket;private MonitorSend send;public MonitorReceive(Socket socket,M

42、onitorSend send) this.socket=socket;this.send=send;public void run() PrintStream cout=null;/ Monitor程序至浏览器的输出流BufferedInputStream sin=null;/ Web服务器至Monitor程序的输入流StringBuffer sb=new StringBuffer();/ Web服务器响应内容try cout=new PrintStream(socket.getOutputStream();URL url=new URL( ,hostName,targetPort,send

43、.getFileName();URLConnection conn=url.openConnection();conn.connect();sin=new BufferedInputStream(conn.getInputStream();byte buffer=new byteInteger.parseInt(conn.getHeaderField(Content-Length);sin.read(buffer);cout.write(buffer,0,buffer.length);sb.append(conn.getHeaderField(null)+rn);sb.append(Serve

44、r: +conn.getHeaderField(Server)+rn);sb.append(ETag: +conn.getHeaderField(ETag)+rn);sb.append(Last-Modified: +conn.getHeaderField(Last-Modified)+rn);sb.append(Content-Type: +conn.getHeaderField(Content-Type)+rn);sb.append(Content-Length: +conn.getHeaderField(Content-Length)+rn);sb.append(Date: +conn.

45、getHeaderField(Date)+rn);sb.append(rn);sb.append(new String(buffer); catch(Exception e) /JOptionPane.showMessageDialog(null, e.getMessage(); finally monitorPanel.addReceiveContent(sb.toString();tryif(cout!=null)cout.close();if(sin!=null)sin.close();if(socket!=null)socket.close();catch(Exception e)附录

46、2:设计程序清单/程序名称: 网络连接建立/程序功能:实现监听器网络监听/程序 林慧娟/最后修改日期: 2012/6/29package ;import .*;import java.io.*;import javax.swing.JOptionPane;import com.jyh.bean.Record;import com.jyh.bean.URLInfo;import com.jyh.gui.MonitorPanel;public class TCPMonitorServer extends Threadprivate int listenPort;private String hos

47、tName;private int targetPort;private ServerSocket serverSocket=null;private MonitorPanel monitorPanel;public TCPMonitorServer(URLInfo urlInfo,MonitorPanel monitorPanel) this.listenPort=urlInfo.getListenPort();this.hostName=urlInfo.getHostName();this.targetPort=urlInfo.getTargetPort();this.monitorPan

48、el=monitorPanel;public void run() try serverSocket=new ServerSocket(listenPort);while(true) Socket socket=serverSocket.accept();MonitorSend send=new MonitorSend(socket);MonitorReceive receive=new MonitorReceive(socket,send);send.start();receive.start();catch(Exception e) JOptionPane.showMessageDialo

49、g(monitorPanel,e.getMessage();finallytryif(serverSocket!=null)serverSocket.close();catch(Exception e)public void close() tryif(serverSocket!=null)serverSocket.close();catch(Exception e)/用来显示浏览器提交给Web服务器的信息,author Administratorclass MonitorSend extends Thread private Socket socket;private String file

50、Name;public MonitorSend(Socket socket) this.socket=socket;public void run() BufferedReader cin=null;StringBuffer sb=new StringBuffer();Record record=new Record();try cin=new BufferedReader(new InputStreamReader(socket.getInputStream();record.setRequest(s);record.setTargetHost(hostName);record.setRequestHost(socket.getInetAddress().getHostAddress();setFileName(s);sb.append(s+rn);while(s=cin.readLine()!=null)sb.append(s+rn); catch(Exception e) /JOptionPane.showMessageDialog(null, e.getMessage(); finally monitorPanel.addSendContent(sb.toString(),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论