第九章网络程序设计.ppt_第1页
第九章网络程序设计.ppt_第2页
第九章网络程序设计.ppt_第3页
第九章网络程序设计.ppt_第4页
第九章网络程序设计.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章 网络通信,1、网络基本概念 2、Java与Internet 3、使用InetAddress 4、使用URL 5、Socket通信 6、数据报通信,TCP/IP(Transmission Control Protocol传输控制协议/Internet Protocol网间协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则。TCP/IP网络参考模型包括五个层次:应用层、传输层、网络层、链路层、物理层。 ISO/OSI网络参考模型则包括七个层次:应用层、表示层、会话层、传输层、网络层、链路层、物理层。,1、网络基本概念,物理层,大多数基于Internet的应用程序被看

2、作TCP/IP网络的最上层应用层, 如:ftp,http,smtp,pop3,telnet,nntp等。 网络层对TCP/IP网络中的硬件资源进行标识。连接到TCP/IP网络中的每台计算机(或其他设备)都有唯一的地址,这就是IP地址。IP地址实质上是一个32位的整数,通常以“%d.%d.%d.%d”的形式表示,每个d是一个8位整数。 在TCP/IP网络中,不同的机器之间进行通信时,数据的传输是由传输层控制的,这包括数据要发往的目标机器及应用程序、数据的质量控制等。 TCP/IP网络中最常用的传输协议就是TCP(Transport Control Protocol)和UDP(User Datag

3、ram Protocol)。,1、网络基本概念,一台机器通常只通过一条链路连接到网络上,即它只有一个IP地址,但一台机器中往往有很多应用程序需要进行网络通信,如何区分呢?这就要靠网络端口号(port)了。 端口号是一个标记机器的逻辑通信信道的正整数,端口号不是物理实体。IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的最后终结点,它是TCP和UDP的基础。,IP与端口号组合而得出的Socket,可以完全分辨Internet上运行的程序。,1、网络基本概念,端口号是用一个16位的整数来表达的,其范围为065535,其中01023为系统所保留,专门给那些通用

4、的服务(well-known services),如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口为23,因此,当我们编写通信程序时,应选择一个大于1023的数作为端口号,以免发生冲突。,1、网络基本概念,传输层通常以TCP和UDP协议来控制端点到端点的通信。用于通信的端点是由Socket来定义的,Socket是由IP地址和端口号组成的。 传输控制协议(TCP)是在端点与端点之间建立持续的连接而进行通信。建立连接后,发送端将发送的数据印记了序列号和错误检测代码,并以字节流的方式发送出去;接收端则对数据进行错误检查并按序列顺序将数据整理好,数据在需要时可以重新发送,

5、因此整个字节流到达接收端时完好无缺。这与两个人打电话的情形是相似的。 TCP协议具有可靠性和有序性,并且以字节流的方式发送数据,它通常被称为流通信协议。,1、网络基本概念,与TCP协议不同,用户数据报协议(UDP)则是一种无连接的传输协议。利用UDP协议进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的端点(Socket,主机地址和端口号),然后再将数据报发送出去。这种传输方式是无序的,也不能确保绝对的安全可靠,但它很简单也具有比较高的效率,这与通过邮局发送邮件的情形非常相似。,1、网络基本概念,1、网络基本概念,TCP协议和UDP协议各有各的

6、用处。当对所传输的数据具有时序性和可靠性等要求时,应使用TCP协议;当传输的数据比较简单、对时序等无要求时,UDP协议能发挥更好的作用,如ping、发送时间数据等。,1、网络基本概念,2、Java与Internet Java中的网络通信,网络应用是Java语言取得成功的领域之一,它已经成为现在Internet上最流行的一种编程语言。Java语言在网络编程方面提供了许多方便,其他语言往往需要数页代码才能完成的事情,在Java中可能只需要一条语句就可以。 Java的网络通信分为三个层次: 最高一级的网络通信就是我们上一讲中所涉及到的从网络上下载Applet。客户端浏览器通过HTML文件中的标记来识

7、别Applet,并解析Applet的属性,通过网络获取Applet得字节码文件。(由浏览器提供) 上一讲中所涉及到的声音播放和图象显示,其中声音文件和图象文件的获取是次一级的通信。通过类URL的对象指明文件所在位置,并从网络上下载声音和图象文件。(由Java开发环境提供) 最低一级的通信是利用包中提供的类直接在程序中实现网络通信。(由Java语言开发包提供),2、Java与Internet Java中的网络支持,针对网络通信的不同层次,Java提供的网络功能有四大类:InetAddress 、URLs、Sockets、Datagram。 InetAddress面向的是网络层(IP层),用于标识

8、网络上的硬件资源。 URL面向的应用层,通过URL,Java程序可以直接送出或读入网络上的数据。 Sockets和Datagram面向的则是传输层。Sockets使用的是TCP协议,这是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道进行通信。Datagram则使用UDP协议,是另一种网络传输方式,它把数据的目的地纪录在数据包中,然后直接放在网络上。,2、Java与Internet Java中的网络支持,包中的主要的类和可能产生的例外包括: 面向IP层的类:InetAddress (Inet4Address,Inet6Address) 面向应用层的类:URL、URLConn

9、ection 面向网络层的类: TCP协议相关类:Socket、ServerSocket UDP协议相关类:DatagramPacket、DatagramSocket、MulticastSocket 可能产生的例外: BindException、ConnectException、MalformedURLException、NoRouteToHostException、ProtocolException、SocketException、UnknownHostException、UnknownServiceException,类InetAddress可以用于标识网络上的硬件资源,它提供了一系列方法

10、以描述、获取及使用网络资源。 InetAddress类没有构造函数,因此不能用new来构造一个InetAddress实例。通常是用它提供的静态方法来获取: public static InetAddress getByName(Stringhost) :host可以是一个机器名,也可以是一个形如“%d.%d.%d.%d”的IP地址或一个DSN域名。 public static InetAddress getLocalHost() public static InetAddress getAllByName(Stringhost) public static InetAddress getByA

11、ddress(Stringhost, Byteaddr) 这些方法通常会产生UnknownHostException例外,应在程序中捕获处理。 以下是InetAddress类的几个主要方法,通过上述方法获得InetAddress类的实例后就可以使用: public byte getAddress():获得本对象的IP地址(存放在字节数组中)。 public String getHostAddress():获得本对象的IP地址“%d.%d.%d.%d”。 public String getHostName():获得本对象的机器名。,3、使用InetAddress,下面的例子演示Java如何根据域

12、名自动到DNS(域名服务器)上查找IP地址(与DNS服务器的连接减至一行): public class getIP public static void main(String args) InetAddress hit = null; try hit = InetAddress.getByName(“”); catch(UnknownHostException e) System.out.println(hit); ,3、使用InetAddress,getIP.java,通过InetAddress,可以获取本机的IP地址: public class getLocalHostTest publ

13、ic static void main() InetAddress myIP = null; try myIP = InetAddress.getLocalHost(); catch(UnknownHostException e) System.out.println(myIP); ,3、使用InetAddress,getLocalHostTest.java,4、使用URL,URL是统一资源定位符(Uniform Resource Locator)的简称,它表示Internet上某一资源的地址。Internet上的资源包括HTML文件、图象文件、声音文件、动画文件以及其他任何内容(并不完全是文

14、件,也可以是一个对数据库的查询等)。 通过URL,就可以访问Internet。浏览器或其他程序通过解析给定的URL就可以在网络上查找相应的文件或其他资源。,4、使用URL,一个URL包括两部分内容:协议名称和资源名称,中间用冒号隔开: Protocol:resourceName 如: 协议名称指的是获取资源时所使用的应用层协议,如http,ftp,file等;资源名称则是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个应用。当然,并不是所有的URL都必须包含这些内容。 ftp:/ :8080/java/network.html#UDP,4、使用URL 在Java中构造URL,在包中,

15、提供了类URL来表示URL。类URL提供了很多构造方法来生成一个URL对象: public URL(Stringspec) public URL(URL context, String spec) public URL(Stringprotocol, Stringhost, Stringfile) public URL(Stringprotocol, Stringhost, intport, Stringfile) 以下是一些具体的构造实例: URL url1 = new URL(“ URL base = new URL(“”); URL url2 = new URL(base, “mywor

16、k1.html”); URL url3 = new URL(base, “mywork2.html”); URL url4 = new URL(“http”, “”,“/lyw/test.html”); URL url5 = new URL(“http”, “”, 8080, “/java/network.html”); 另外还有两种稍微复杂些的构造方法(参见JDK文档)。,当创建URL时发生错误,系统会产生例外MalformedURLException,这是非运行时例外,必须在程序中捕获处理。 URL url1,url2,url3; try url1 = new URL(“file:/D:/

17、image/example.gif”); url2 = new URL(“ url3 = new URL(url2, “test.gif”); catch(MalformedURLException e) DisplayErrorMessage(); ,4、使用URL 在Java中构造URL,一个URL对象生成后,其属性是不能被改变的(与String对象相似),但可以通过它给定的方法来获取这些属性: public String getProtocol():获取该URL的协议名 public String getHost() :获取该URL的主机名 public String getPort()

18、 :获取该URL的端口号 public String getPath() :获取该URL的文件路径 public String getFile() :获取该URL的文件名 public String getRef() :获取该URL在文件中的相对位置 public String getQuery() :获取该URL的查询名,4、使用URL URL的基本方法,ParseURL.java,4、使用URL 通过URL读取www信息,通过URL类提供的方法openStream(),就可以读取一个URL对象所指定的资源。 public final InputStream openStream() 方法o

19、penStream()与指定的URL建立连接并返回一个InputStream对象,将URL位置的资源转成一个输入数据流。通过这个InputStream对象,就可以读取资源中的数据。,4、使用URL 通过URL读取www信息,import .URL; import java.applet.*; import java.awt.*; import java.io.*; import .MalformedURLException; public class ReadFromURL extends Applet URL url=null; String readstring; DataInputStr

20、eam dis; int i=0; public void init() try url=new URL(getCodeBase(),“getIP.java); dis=new DataInputStream(url.openStream(); catch(MalformedURLException q) System.out.println(MalformedURLException:+q); catch(IOException w) System.out.println(IOException:+w); ,ReadFromURL.java,4、使用URL 通过URL读取www信息,publ

21、ic void paint(Graphics e) try while(readstring=dis.readLine()!=null) e.drawString(readstring,10,i ); i=i+20; e.drawString(#end of the file,10,i); dis.close(); catch(IOException g) System.out.println(IOException:+g); ,ReadFromURL.java,4、使用URL URL和InetAddress的联合使用,Applet中的网络通信需要将URL和InetAddress联合使用来得到

22、相关的IP地址。 通过类Applet的getCodeBase()方法获得提供它的主机的URL实例 利用类URL的getHost()方法得到主机名 利用类InetAddress的getByName()得到该主机的IP地址 通过IP地址,就可以进行网络通信(TCP, UDP),URL url = getCodeBase(); String host = url.getHost(); Try InetAddress address = InetAddress.getByName(host); catch(Exception e) Try DatagramSocket socket = new Dat

23、agramSocket(); DatagramPacket packet = new DatagramPacket(buf, length, address, port); socket.send(packet); catch(Exception e),AppletURLReader.java,4、使用URL URL连接,通过URL类提供的方法openConnection(),就可以获得一个URL连接(URLConnection)对象。 public URLConnection openConnection() 通过URL的方法openStream(),只能从网络上读取资源中的数据。通过URL

24、Connection类,可以在应用程序和URL资源之间进行交互,既可以从URL中读取数据,也可以向URL中发送数据。URLConnection类表示了应用程序和URL资源之间的通信连接。 try URL url = new URL(“”); URLConnection uc = url.openConnection(); catch(MalformedURLException e1) catch(IOException e2) ,4、使用URL URL连接,public class URLConnectionReader public static void main (String args

25、) try URL hit = new URL( URLConnection uc = hit.openConnection(); BufferedReader in = new BufferedReader( new InputStreamReader( uc.getInputStream() ) ); String line; while( (line = in.readLine() != null ) System.out.println(line); in.close(); catch(Exception e) System.out.println(e); ,URLConnection

26、Reader.java,通过URLConnection对象获取的输入流和输出流(不是所有的资源都可以获得有效的输出流),可以与现有的CGI程序进行交互。URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接。,4、使用URL URL连接,URL url = new URL( URLConnection uc = url.openConnection(); uc.setDoOutput(true); PrintStream out = new PrintStream(uc.getOutputStream(); BufferedReader in = new Buff

27、eredReader( new InputStreamReader( uc.getInputStream() ) );,4、使用URL 其他URL类,URLConnection类的其他方法以及其他URL相关的类(URLClassLoader,URLDecoder,URLEncoder,URLStreamHandler,HttpURLConnection,JarURLConnection,ContentHandler)的使用,大家在以后的实践中去学习。,5、Socket通信,在Java中,基于TCP协议实现网络通信的类有两个:在客户端的Socket类和在服务器端的ServerSocket类。 在

28、服务器端通过指定一个用来等待的连接的端口号创建一个 ServerSocket实例。 在客户端通过规定一个主机和端口号创建一个 Socket实例,连到服务器上。 ServerSocket类的accept方法使服务器处于阻塞状态,等待用户请求。,构造方法: public Socket(Stringhost, intport) /远程服务器IP及响应端口 public Socket(InetAddressaddress, intport) public Socket(Stringhost, intport, InetAddresslocalAddr, intlocalPort) public Soc

29、ket(InetAddressaddress, intport, InetAddresslocalAddr, intlocalPort) /在指定的机器上的指定端口上运行 在JDK1.1以前,Socket类可同时用于TCP/UDP通信: public Socket(Stringhost, intport, booleanstream) public Socket(InetAddresshost, intport, booleanstream) 这些方法都将抛出例外IOException,程序中需要捕获处理。,5、Socket通信 类Socket,Socket的输入/输出流管理 public I

30、nputStream getInputStream() public void shutdownInput() public OutputStream getOutputStream() public void shutdownOutput() 这些方法都将抛出例外IOException,程序中需要捕获处理。 关闭Socket public void close() throws IOException 设置/获取Socket数据 public InetAddress getInetAddress()、public int getPort(), public void setSoTimeout

31、(inttimeout), 这些方法都将抛出例外SocketException,程序中需要捕获处理。,5、Socket通信 类Socket,构造方法: public ServerSocket(intport) public ServerSocket(intport, intbacklog) /支持指定数目的连接 public ServerSocket(intport, intbacklog, InetAddressbindAddr) /在指定的机器上运行 这些方法都将抛出例外IOException,程序中需要捕获处理。 主要方法 public Socket accept():等待客户端的连接

32、public void close():关闭Socket 设置/获取Socket数据 public InetAddress getInetAddress()、public int getLocalPort(), public void setSoTimeout(inttimeout), 这些方法都将抛出例外SocketException,程序中需要捕获处理。,5、Socket通信 类ServerSocket,5、Socket通信,无论一个Socket通信程序的功能多么齐全、程序多么复杂,其基本结构都是一样的,都包括以下四个基本步骤: 1、在客户方和服务器方创建Socket/ServerSock

33、et实例。 2、打开连接到Socket的输入/输出流。 3、利用输入/输出流,按照一定的协议对Socket进行读/写操作。 4、关闭输入/输出流和Socket。 通常,程序员的主要工作是针对所要完成的功能在第3步进行编程,第1、2、4步对所有的通信程序来说几乎都是一样的。,5、Socket通信,5、Socket通信,1、建立Socket 在客户端: try Socket client = new Socket(host, 4444); catch(IOException e) 在服务器端: try ServerSocket server = new ServerSocket(4444); ca

34、tch(IOException e) Socket socket = null; try socket = server.accept(); /等待客户端连接 catch(IOException e),BufferedReader = new BufferedReader( new InputStreamReader( socket.getInputStream() ) ); BufferedWriter = new BufferedWriter( new InputStreamWriter( socket.getOutputStream() ) );,2、在客户端和服务器端同时打开输入/输出

35、流 类Socket提供了方法getInputStream()和getOutputStream()来得到Socket对应的输入/输出流以进行数据读写(传输)操作,它们分别返回InputStream对象和OutputStream对象。 为了便于读写数据,应在返回的输入/输出流对象上建立过滤流,如DataInputStram/DataOutputStram、BufferedInputStream/ BufferedOutputStream、PrintStream;InputStreamReader/ OutputStreamWriter、BufferedReader/ BufferedWriter、

36、PrintWriter等。,5、Socket通信,3、关闭输入/输出流和Socket 在客户端和服务器端分别关闭输入/输出流和Socket:先关闭所有相关的输入/输出流,再关闭Socket。,5、Socket通信,5、Socket通信,SingleTalkClient.java,看看这个谈话程序的运行效果:,2、客户端,SingleTalkServer.java,1、服务器端,5、Socket通信 简单的Client/Server,在本地机器上测试网络程序用回绕地址 Socket socket = new Socket(“”, 4444); 建立socket连接后,还应该建立

37、输入输出数据流。 要控制好输入/输出流和Socket关闭的时间。 如果网络的一端已经关闭,另一端读到null。 在运行时,服务器端程序一般应先行启动。,例客户端程序,public class SingleTalkClient public static void main(String args) throws IOException Socket client = null; PrintWriter out = null; BufferedReader in = null; try client = new Socket(, 4444); out = new PrintWr

38、iter(client.getOutputStream(), true); /auto flush in = new BufferedReader(new InputStreamReader(client.getInputStream(); catch (UnknownHostException e) System.err.println(Dont know about host: .); System.exit(1); catch (IOException e) System.err.println(Couldnt get I/O for the connection to

39、:.); System.exit(1); ,BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in); String fromServer, fromUser; boolean sbye = false;boolean ubye = false; System.out.print(Client input:);fromUser = stdIn.readLine(); while( true ) if( ubye = false ) out.println(fromUser); out.

40、flush(); /System.out.println(Client: + fromUser); if (fromUser.equals(Bye.) ubye = true; if( sbye = false ) fromServer = in.readLine(); System.out.println(from Server: + fromServer); if (fromServer.equals(Bye.) sbye = true; if( ubye = false ) System.out.print(Client input:); fromUser = stdIn.readLin

41、e(); if( ubye = true ,服务器端程序,public class SingleTalkServer public static void main(String args) throws IOException ServerSocket serverSocket = null; try serverSocket = new ServerSocket(4444); catch (IOException e) System.err.println(Could not listen on port: 4444.); System.exit(1); Socket clientSock

42、et = null; try clientSocket = serverSocket.accept(); /程序将在此等候客户端的连接 catch (IOException e) System.err.println(Accept failed.); System.exit(1); System.out.println(Accept OK!);,服务器端程序,/打开输入/输出流 PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedRead

43、er( new InputStreamReader( clientSocket.getInputStream(); /从标准输入流(键盘)中获取信息 BufferedReader sin = new BufferedReader( new InputStreamReader( System.in ) ); boolean sinbye = false; boolean inbye = false; String sinputLine, inputLine; inputLine = in.readLine(); System.out.println( from Client: + inputLi

44、ne ); System.out.print(Server input:); sinputLine = sin.readLine();,服务器端程序,while( true ) if( sinbye = false ) out.println(sinputLine); out.flush(); /System.out.println(Server: + sinputLine); if (sinputLine.equals(Bye.) sinbye = true; if( inbye = false ) inputLine = in.readLine(); System.out.println(

45、 from Client: + inputLine ); if (inputLine.equals(Bye.) inbye = true; if( sinbye = false ) System.out.print(Server input:); sinputLine = sin.readLine(); if( sinbye = true ,解决方案一: 在一台计算机上一次启动多个服务器程序,只要端口号不同。 myserver1 myclient1 myserver2myclient2,5、Socket通信 支持多Client,解决方案二: 将服务器写成多线程的,不同的处理线程为不同的客户服务

46、。主线程只负责循环等待,处理线程负责网络连接,接收客户输入的信息。 /主线程 while (true) accept a connection ; create a thread to deal with the client ; end while,5、Socket通信 支持多Client,5、Socket通信 支持多Client,serverSocket = new ServerSocket(4444); while (listening) Socket socket; socket = serverSocket.accept(); /程序将在此等候客户端的连接 clientNumber+

47、; /记录客户数目 new MultiTalkServerThread(socket, clientNumber).start(); /创建一个新线程处理此客户请求 serverSocket.close();,class MultiTalkServerThread extends Thread public MultiTalkServerThread(Socket socket, int clientNumber) this.socket = socket; this.clientNumber = clientNumber; public void run() ,5、Socket通信 支持多C

48、lient,5、Socket通信 Client之间通过Server通信,可以在服务器端将与各客户进行通信的Socket和线程管理起来,从而各客户之间可以在服务器端的协助下进行通信。,ChatServer.java ChatClient.java,UDP协议是无连接的协议,它以数据报作为数据传输的载体。数据报是一个在网络上发送的独立信息,它的到达、到达时间以及内容本身等都不能得到保证。数据报的大小是受限制的,每个数据报的大小限定在64KB以内。 UDP协议无需在发送方和接收方建立连接,但也可以先建立连接。数据报在网上可以以任何可能的路径传往目的地。 在Java中,基于UDP协议实现网络通信的类有

49、三个: 用于表达通信数据的数据报类DatagramPacket 用于进行端到端通信的类DatagramSocket 用于广播通信的类MulticastSocket。,6、数据报通信,构造方法 public DatagramPacket(bytebuf, intlength) public DatagramPacket(bytebuf, intoffset, intlength) /这两个方法用于描述接收数据报 public DatagramPacket(bytebuf, intlength, InetAddress address, intport) public DatagramPacket

50、(bytebuf, intoffset, intlength, InetAddressaddress, intport) /这两个方法用于发送数据报 获取数据获取接收数据报中的信息 public InetAddress getAddress() public byte getData() public int getLength() public int getOffset() public int getPort() 设置数据设置发送数据报中的信息 setAddress(InetAddressiaddr)、setPort(intiport)、setData(bytebuf)、setData(

51、bytebuf, intoffset, intlength) 、setLength(intlength),6、数据报通信 数据报:类DatagramPacket,构造方法 public DatagramSocket() public DatagramSocket(intport) /在指定的端口通信 public DatagramSocket(intport, InetAddressladdr) /在指定的地点运行 这三个方法都将抛出例外SocketException,程序中需要捕获处理。 最主要的方法发送与接收数据报 public void receive(DatagramPacketp)

52、public void send(DatagramPacketp) 这两个方法都将抛出例外IOException,程序中需要捕获处理。 其他方法 public void connect(InetAddressaddress, intport) /与指定的机器通信,有连接 public void disconnect() /关闭与指定机器的连接 public void close() /关闭Socket,6、数据报通信 点到点通信:类DatagramSocket,6、数据报通信 点到点通信,UDPGet.java,看看这个点到点通信程序的运行效果:,2、接收端,UDPSend.java,1、发送

53、端,例: UDPGet,import .*; import java.awt.*; import java.awt.event.*; public class UDPGet extends Frame implements ActionListener TextArea textArea1=new TextArea(); Button button1=new Button(); public static void main(String args) UDPGet get=new UDPGet(); get.setLocation(100,100); get.setSize(300,200);

54、 get.show(); get.waitForData(); ,例: UDPGet,public UDPGet() try this.setTitle(接收数据报); textArea1.setText(); button1.setLabel(退出); this.add(textArea1,BorderLayout.CENTER); this.add(button1,BorderLayout.SOUTH); button1.addActionListener(this); catch(Exception e)e.printStackTrace(); ,void waitForData() t

55、ry byte buffer=new byte1024; DatagramPacket packet=new DatagramPacket(buffer,buffer.length); DatagramSocket socket=new DatagramSocket(9999); while(true) socket.receive(packet); String s=new String(buffer,0,0,packet.getLength(); textArea1.append(s+n); packet=new DatagramPacket(buffer,buffer.length);

56、catch(Exception e) public void actionPerformed(ActionEvent e) Component com=(Component)e.getSource(); if(com.equals(button1) System.exit(0); ,例: UDPGet,import .*; import java.awt.*; import java.awt.event.*; public class UDPGet extends Frame implements ActionListener TextArea textArea1=new TextArea()

57、; Button button1=new Button(); public static void main(String args) UDPGet get=new UDPGet(); get.setLocation(100,100); get.setSize(300,200); get.show(); get.waitForData(); ,例: UDPSend,import .*; import java.awt.*; import java.awt.event.*; public class UDPSend extends Frame implements ActionListener

58、GridLayout net; TextField textField1=new TextField(); Button button1=new Button(); Button button2=new Button(); public static void main(String args) UDPSend send=new UDPSend(); send.setLocation(100,100); send.setSize(300,150); send.show(); ,例: UDPSend,public UDPSend() try this.setTitle(发送数据报); button1.setLabel(发送); button2.setLabel(退出); net=new GridLayout(3,1); setLayout(net); this.add(textField1,null); this.add(button1,null); this.add(button2,null

温馨提示

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

评论

0/150

提交评论