java教学课件:第8章 网络功能

上传人:鲁** 文档编号:569063575 上传时间:2024-07-27 格式:PPT 页数:60 大小:852.50KB
返回 下载 相关 举报
java教学课件:第8章 网络功能_第1页
第1页 / 共60页
java教学课件:第8章 网络功能_第2页
第2页 / 共60页
java教学课件:第8章 网络功能_第3页
第3页 / 共60页
java教学课件:第8章 网络功能_第4页
第4页 / 共60页
java教学课件:第8章 网络功能_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《java教学课件:第8章 网络功能》由会员分享,可在线阅读,更多相关《java教学课件:第8章 网络功能(60页珍藏版)》请在金锄头文库上搜索。

1、第第8章章 网络功能网络功能2第第8章网络功能章网络功能n8.1 Java与与internetn8.2 使用使用URLn8.3 访问访问cgin8.4 URL连接连接n8.5 Socketn8.6 internet应用应用n8.7 数据报数据报n8.8 JDBCn8.9 小结小结38.1 Java与网络与网络nJava语言取得成功的领域之一就是网络语言取得成功的领域之一就是网络n (其他语言其他语言)数页代码数页代码-(Java)一条语句一条语句nTCP/IP(传输控制协议传输控制协议/网间协议网间协议)是是internet的主的主要协议要协议,定义了计算机和外设进行通信所使用的定义了计算机和

2、外设进行通信所使用的规则规则(应用层应用层,传输层传输层,网络层网络层,链路层链路层).n大多数基于大多数基于internet的应用程序被看作的应用程序被看作TCP/IP协协议的上一层议的上一层. 如如 : ftp, http, smtp, pop3, telnet, nntp等等nIP地址地址:TCP/IP网络中的每台计算机都有唯一的网络中的每台计算机都有唯一的地址地址-IP地址地址.n在在Java中中,有一个用来存储有一个用来存储internet地址的类叫地址的类叫InetAddress.48.1 Java与网络与网络n例例:获取本机的获取本机的IP地址地址import .*;public

3、 class getLocalHostTest public static void main() InetAddress myIP=null; try myIP=InetAddress.getLocalHost(); catchUnknowHostException e) System.out.println(myIP); 创建创建inetAddress类不用构造函数类不用构造函数(不用不用new)58.1 Java与网络与网络下面的例子演示下面的例子演示java如何根据域名自动到如何根据域名自动到DNS上查找上查找IP地址地址(与与DNS服务器的连接减至一行服务器的连接减至一行)impor

4、t .*;public class getIP public static void main(String args) InetAddress pku=null; try pku= InetAddress.getByName(“”); catch(UnknowHostException e) System.out.println(pku); 68.1 Java与网络与网络nJava提供的网络功能有三大类提供的网络功能有三大类: URL, Socket, Datagram.nURL是三大功能中最高级的一种是三大功能中最高级的一种,通过通过URL Java程序可以直接送出或读入网络上的数据程序可

5、以直接送出或读入网络上的数据.nSocket是传统网络程序最常用的方式是传统网络程序最常用的方式,可以想象可以想象为两个不同的程序通过网络的通信信道为两个不同的程序通过网络的通信信道.nDatagram是更低级的网络传输方式是更低级的网络传输方式,它把数据它把数据的目的纪录在数据包中的目的纪录在数据包中,然后直接放在网络上然后直接放在网络上.7URLJava 程序程序DataInputStream8.2 使用使用URLn8.2.3 通过通过URL读取读取WWW服务器上的数据服务器上的数据n将将URL位置的数据转成一个数据流位置的数据转成一个数据流nURL url=new (http:/ dat

6、a=newn DataInputStream(url.openStream();n从数据流中读出数据从数据流中读出数据nString line=data.readLine()n while(line!=null) line=data.readLine()88.2 使用使用URL例例:从给定的位置中读数据从给定的位置中读数据(ReadURLData.prj)http:/ actionURL urlButtonFrame主类主类str=a.getText()b=url.openStream()TextArea cline_str=b.readLine()c.appendText(line_str)

7、;TextField a URL url=new URL(str)DataInputStream b98.2 使用使用URLpublic boolean action(Event evt, Object arg) try String line; String str=textfield.getText(); url=new URL(str); data=new DataInputStream(url.openStream(); while(line=data.readLine()!=null) textarea.appendText(line); data.close();catch(Mal

8、formedURLException me)System.out.println(Error URL);catch(IOException ie)System.out.println(Error IO); return true; 10欢迎来访欢迎来访,你是第你是第 个来访者个来访者!1 2 7你是第你是第个个来访者来访者客户端客户端HTML服务器端服务器端CGI程序程序num+imgcgi程序名程序名8.3 访问访问cgin起始页上的计数器及起始页上的计数器及cgi程序程序(script)118.3 访问访问cgisendresetYour name数据库数据库服务器服务器Web服务器服务器

9、cgi程序程序form128.3 访问访问cgincgi(公共网关公共网关)程序可以用任何一种变成语言来程序可以用任何一种变成语言来写写.ncgi将将web与外部程序连接起来(数据库查询等)与外部程序连接起来(数据库查询等)ncgi程序要放在指定的目录下程序要放在指定的目录下cgi-bin目录目录.ncgi通常以通常以GET或或POST接收数据接收数据,138.3 访问访问cgin从小应用中运行从小应用中运行CGI程序程序(GET) Socket runcgi=new Socket(“”,80); OutputStream os=runcgi.getOutputStream(); PrintS

10、tream ps=new PringtStream(os); ps.println(“GET/cgi-bin/testcgi? arg1=val1& args2=val2&arg3=val3”);nhttp:/?148.3 访问访问cginget方法把数据作为命令行中的参数传递给此方法把数据作为命令行中的参数传递给此cgi (适用于少量参数的情况适用于少量参数的情况)nJava cgi程序通过程序通过main方法的串参数接受命令方法的串参数接受命令行行.nC cgi程序通过访问环境变量中的查询串程序通过访问环境变量中的查询串 QUERY_STRING,来获得查询串中的信息来获得查询串中的信息.

11、n例如在例如在C程序中程序中: char *str; nstr=getevn(QUERY_STRING);158.3 访问访问cgiimport java.io.*; import .*;public class test_cgi public static void main(String args) throws Exception URL url = new URL (http:/ BIN/test_2.cgi?012345678); URLConnection connection = url.openConnection(); #include stdio.h” main() cha

12、r *Query_String; Query_String = getenv(QUERY_STRING); /*treatment*/168.3 访问访问cgin从小程序中运行从小程序中运行CGI程序程序(post)npost方法通过标准输出向方法通过标准输出向cgi传送参数传送参数(适合参数适合参数 较多的情况较多的情况)n用用post方法要有数据输出流方法要有数据输出流nSocket runcgi=new Socket(“”,80);n建立建立socket连接连接nDataOutputStream ds=runcgi.getOutputStream();n建立输入流建立输入流nds.pri

13、ntln(“POST/cgi-bin/guestbook.pl”);n运行运行cgi程序程序178.3 访问访问cgin通知发送的数据类型通知发送的数据类型nds.println(“Content-type:plain/text”);n通知发送的数据长度通知发送的数据长度nString data=“Hello world”nds.println(“Content-length”+data.length+”n”);n发送数据发送数据nds.println(data);188.3 访问访问cgincgi接收接收post方法送来的数据方法送来的数据,就像从标准输入读就像从标准输入读数据一样数据一样.

14、ngetchar();gets();(C语言的情况语言的情况)(要建立数据流要建立数据流)ncgi返回数据时要指明数据类型等信息返回数据时要指明数据类型等信息:n printf(“Content-type:text/plainnn”);n或或 printf(“Content-type:text/htmlnn”);n或或 printf(“Content-type:image/gifnn”);ncgi规定服务器与外部程序交换信息的协议规定服务器与外部程序交换信息的协议.198.3 访问访问cgiString count_srtURL url=new URL(“http:/202.118.239.3

15、8/cgi-bin/count.cgi”);DataInputStream data=new DataInputStream(url.openStrean();count_str=data.readLine();(此处读入的是此处读入的是cgi程序的输出程序的输出)g.drawstring(“You are the “+count_str+ ”visitor”);返回结果返回结果DataInputStream客户端客户端java程序程序服务器端服务器端cgi程序程序URL连接连接208.4 URL连接连接nURL双向通信双向通信(URLConection)nURLConnection是一个一是

16、一个一http为中心的类为中心的类 1. 建立连接建立连接 URL url=new URL(“http:/ URLConnection con=url.openConnection(); 2. 向服务器端送数据向服务器端送数据 PrintStream outStream=new PrintStream(con.getOutputStream(); outStream.println(string_data);218.4 URL连接连接3. 从服务器读数据从服务器读数据 DataInputStream inStream=new DataInputStream(con.getInputStream

17、(); inStream.readLine();n从从URL中得到的输出流通常与一个中得到的输出流通常与一个CGI程序结程序结合一起工作合一起工作客户端客户端java程序程序DataOutputStreamDataInputStreamCGI程序程序STDINSTDOUT服务器服务器( 排序排序 sort.cgi)connectiuongetchar()putchar()228.4 URL连接连接nURLConnection同时支持同时支持get和和post两种机制一两种机制一般的格式般的格式.n缺省情况下位缺省情况下位post method方式方式nURL和和URLConnection的区别

18、在于前者代表一的区别在于前者代表一个资源的位置个资源的位置,后者代表一种连接后者代表一种连接n下面的例子中下面的例子中Java程序访问程序访问cgi程序程序,并传给它并传给它10个数据个数据,cgi程序胡接收后程序胡接收后,排序排序,并传送回来并传送回来.n连接的建立、数据流的建立、连接的建立、数据流的建立、java如何发数据、如何发数据、如何接收数据、如何接收数据、cgi程序如何发送和接收程序如何发送和接收238.4 URL连接连接import java.io.*; import .*;public class test_cgipublic static void main(String a

19、rgs) throws Exception URL url = new URL(http:/ URLConnection connection = url.openConnection(); connection.setDoOutput(true);PrintStream out = new PrintStream(connection.getOutputStream(); out.println(0123456789);out.close(); 248.4 URL连接连接DataInputStream in = new DataInputStream(connection.getInputS

20、tream();String inputLine;while (inputLine = in.readLine() != null) System.out.println(inputLine);System.in .read ();in.close();258.4 URL连接连接#include stdio.hmain() int array10; int i,j,k; printf(Content-type:text/plainnn); for(i=0;i=9;i+) arrayi=getchar(); /read data from InputStream for(i=0;i=8;i+)

21、for(j=i;j=9;j+) if(arrayiarrayj) k=arrayj; arrayj=arrayi; arrayi=k; printf(nOutput number!n); for(i=0;i=9;i+) printf(%c,arrayi); /write data to OutputStream268.5 Socket8.3.1 什么是什么是socket?nSocket是网络上运行的程序之间双向通信链路是网络上运行的程序之间双向通信链路的最后终结点的最后终结点网络服务网络服务Mailftpfinger20telnet数据结构数据结构I/O缓冲区缓冲区端口端口2123客户程序客户

22、程序SocketIP,portIP与端口的组合得出一与端口的组合得出一个套接字个套接字,可以完全分辨可以完全分辨internet上运行的程序上运行的程序27internet服务服务端口号端口号端口号端口号internet服务服务telnet 23 nntp 119ftp 21 www 80DNS 53 POP3 1108.5 Socketn端口号端口号:TCP/IP协议为每种服务定义了一个端协议为每种服务定义了一个端口口,当一台计算机上运行不同服务器程序时当一台计算机上运行不同服务器程序时,根根据端口号不同提供相应的服务据端口号不同提供相应的服务.n端口号不是计算机上的物理连接器端口号不是计算

23、机上的物理连接器,它只是具有它只是具有软件意义的假想端口软件意义的假想端口288.5 Socketn在服务器端通过指定一个用来等待的连接的端在服务器端通过指定一个用来等待的连接的端口号创建一个口号创建一个 ServerSocket实例实例.n在客户端通过规定一个主机和端口号创建一个在客户端通过规定一个主机和端口号创建一个 socket实例实例,连到服务器上连到服务器上.nServerSocket类的类的accept方法使服务器处于阻塞方法使服务器处于阻塞状态状态,等待用户请求等待用户请求nSocket类和类和ServerSocket是基于是基于TCP协议的协议的,TCP协议提供协议提供64个端

24、口个端口,256以内位保留端口以内位保留端口.298.5 Socketn在本地机器上测试网络程序用回送地址在本地机器上测试网络程序用回送地址Socket socket=new Socket(“127.0.0.1”,2525);n如果网络的一端已经关闭如果网络的一端已经关闭,另一端读到另一端读到null.n建立建立socket连接后连接后,还应该建立输入输出数据流还应该建立输入输出数据流.308.5 SocketServerServerSocket(port #)Server Socket.accept()Socket()OutputStreamInputStreamClose SocketCl

25、ientSocket(host, port #)Attempt the connectionOutputStreamInputStreamClose Socket318.5 Socketn下面的例子演示一个简单的服务器与客户的交下面的例子演示一个简单的服务器与客户的交互互,即服务器等待即服务器等待,客户访问客户访问,相互通一次信息相互通一次信息.328.5 Socket. 8.5 Socket创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流读客户读客户 端信息端信息向用户发出一个字符串向用户发出一个字符串创建创建Socke

26、t实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(接收并显示接收并显示)送用户名给送用户名给服务器服务器关闭流关闭流waiting for user127.0.0.1 11111111login:connetcting client.java提示用户登录成功提示用户登录成功读读socket流流User :javaLogin successful338.5 Socketn例例:显示服务器与客户机间的通信显示服务器与客户机间的通信(服务器端服务器端)PrintStream ps=null;DataInputStream dis=null;String username

27、;ServerSocket serverSocket=null;Socket clientSocket=null;try serverSocket=new ServerSocket(1111);catch (IOException e) System.out.println( “Error”+e);System.exit(1);try clientSocket=serverSocket.accept();catch (IOException e) System.out.println(Accept failed.);System.exit(1);创建服务器创建服务器(端口号端口号)定义数据成员

28、定义数据成员服务器等待服务器等待网络连接网络连接348.5 Socketn.ps=new PrintStream(clientSocket.getOutputStream();dis=new DataInputStream(clientSocket.getInputStream(); 创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流向客户发出登录要求向客户发出登录要求 ps.println(login:); ps.flush();358.5 Socketps.println(login sucessful); ps.flu

29、sh();System.out.println(username+ has logged off);读客户读客户 端信息端信息创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流向用户发出登录要求向用户发出登录要求通知客户连接完毕通知客户连接完毕if (username=dis.readLine()=null)System.out.println(readLine returned null);System.exit(1); System.out.println(Username:+username);368.5 Socket

30、n例例:显示服务器与客户机间的通信显示服务器与客户机间的通信(客户端客户端)创建创建Socket实例实例PrintStream output;DataInputStream input;String string;Socket socket=null;定义数据成员定义数据成员trysocket=new Socket(127.0.0.1,1111);catch(IOException e) System.out.println(Error ”+e); return; input=new DataInputStream(socket.getInputStream();output=new Prin

31、tStream(socket.getOutputStream();建立建立socket流流37. 8.5 Socketn.System.out.println(input.readLine();创建创建Socket实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(看到提示看到提示)System.in.read(bArray);String s=new String(bArray,0);output.println(s);从键盘上读送用户从键盘上读送用户名送给服务器端名送给服务器端关闭流关闭流socket.close();input.close();output.cl

32、ose();System.out.println(Done);System.out.println(input.readLine();System.out.print(Logging off.);读服务器反馈读服务器反馈38. 8.5 Socket. 8.5 Socket创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流读客户读客户 端信息端信息向用户发送字符串向用户发送字符串创建创建Socket实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(看到提示看到提示)送用户名给送用户名给服务器服务器关

33、闭流关闭流waiting for user127.0.0.1 11111111login:connetcting client.java提示用户登录成功提示用户登录成功读读socket流流User :javaLogin successful398.5 Socketn支持多客户支持多客户n一种解决方案一种解决方案:n一台计算机上一次启动多个服务器程序一台计算机上一次启动多个服务器程序,只要端只要端口号不同口号不同.myjavaclientAndServerTestnmyserver myclient-f8.batnmyserver2myclient2-f9.batServer1(1111)cli

34、ent(2222)Server2(2222)client(1111)Computer 1408.5 Socketn第二种方案第二种方案:n(支持多客户支持多客户)Serverclient1client2serverthreadserverthread将服务器写成多线程的将服务器写成多线程的,不同的线程为不同的客不同的线程为不同的客户服务户服务.main()只负责循环等待只负责循环等待线程负责网络连接线程负责网络连接,接收客户输入的信息接收客户输入的信息418.5 Socketn.客户客户1客户客户2服务器服务器线程线程()线程线程2线程线程( )线程线程( )42. 8.5 Socket创建服

35、务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流读客户读客户 端信息端信息提示用户输入客户名提示用户输入客户名创建创建Socket实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(看到提示看到提示)送用户名给送用户名给服务器服务器关闭流关闭流waiting for user127.0.0.1 11111111login:connetcting client.java提示用户登录成功提示用户登录成功读读socket流流User :javaLogin successful438.5 Socketpubli

36、c static void main(String args)ServerSocket serverSocket=null; tryserverSocket=new ServerSocket(1111); catch(Exception e) System.out.println(”Error”+e);System.exit(1); while(true)Socket clientSocket=null; System.out.println(waiting for users.); try clientSocket=serverSocket.accept(); catch(IOExcepti

37、on e)System.out.println(accept failed:+e); new serverThread(clientSocket).start(); 448.5 Socketclass serverThread extends Thread DataInputStream input; PrintStream output; String user; Socket clientSocket; serverThread(Socket clientSocket) this.clientSocket=clientSocket; public void run() try input=

38、new DataInputStream (clientSocket.getInputStream(); output=System.out; user=input.readLine(); System.out.println(user+ Connected!); catch(IOException e) try while(true) String string; if(string=input.readLine()=null) break; output.println(user+string); output.flush(); catch(Exception e) return; Syst

39、em.out.println(user+ has disconnected.); try clientSocket.close(); input.close();catch(Exception e) return; 45serverHello 1076Hello 1071abcWAIT GOabcWAIT GOdefdef 8.5 Socketn例例:通过服务器交换信息通过服务器交换信息(exchangebyserver)468.5 Socketn.服务器服务器(1111)acceptsocket客客户户IP client1线程线程客客户户IP client2线程线程服务器一端为了能接收多个客

40、户的信息服务器一端为了能接收多个客户的信息,它的输入它的输入流流,输出流都是数组型的输出流都是数组型的.ServerSocket.accept()等待用户连接等待用户连接,一旦连接上一旦连接上,则调用服务程序则调用服务程序.服务程序的主要内容是网络的读写服务程序的主要内容是网络的读写,多客户的原因多客户的原因,网络读写的功能用多线程实现网络读写的功能用多线程实现,因此将此部分功因此将此部分功能单独分离出来能单独分离出来,构成线程类构成线程类478.5 Socketclient1client2serviceRequestserverServerSocketSocketgetOutputStrea

41、mgetInputStreamreader.runreader.run服务器端服务器端accept()reader.start()read_net_inputwrite_net_output()48client()write.runwrite_net_output()read_net_input()close_server()客户端客户端writer.start()paint()socketgetLocalPort()getInputStreamgetOutputStream服务器8.5 Socket49 8.7 DatagramnTCP/IP传输层由两个并列的协议传输层由两个并列的协议:TC

42、P,UDP.n一般套接字一般套接字(TCP)提供一个可靠的传输模型作提供一个可靠的传输模型作为两个网络端点的字节流为两个网络端点的字节流,有纠错能力有纠错能力.nUDP没有保持的连接和数据流没有保持的连接和数据流,数据报是一个网数据报是一个网络上发送的独立信息络上发送的独立信息,它的到达它的到达,到达时间到达时间,以及以及内容不能得到保证内容不能得到保证.socketserverclientdatagramserverclient50 8.7 DatagramnTCP提供高可靠性服务提供高可靠性服务,适用于一次要传输交换适用于一次要传输交换大量报文的情况大量报文的情况,信道上传递的包不需要源地

43、址信道上传递的包不需要源地址和目的地址和目的地址nUDP提供高效率服务提供高效率服务,适用于依次传输交换少量适用于依次传输交换少量报文的情形报文的情形 (如数据库查询如数据库查询),每个数据包要包含每个数据包要包含目的地址和端口号目的地址和端口号.n数据报文的使用以包为中心数据报文的使用以包为中心:打包打包,拆包拆包. nJ包支持两种不同的在网络上送数据的包支持两种不同的在网络上送数据的方法方法:一般套接字和数据报文套接字一般套接字和数据报文套接字.51 8.7 Datagramn发出报文的标准步骤如下发出报文的标准步骤如下:n1. 定义数据成员定义数据成员n DatagramSocket s

44、ocket;n DatagramPacket packet;n InetAddress address;(用来存放接收方的地址用来存放接收方的地址)n int port; ;(用来存放接收方的端口号用来存放接收方的端口号)n2. 创建数据报文创建数据报文Socket对象对象n try socket=new DatagramSocket(1111);n catch(.SocketException e) n socket 绑定到一个本地的可用端口绑定到一个本地的可用端口,等待接收客等待接收客户的请求户的请求.52 8.7 Datagramn3.分配并填写数据缓冲区分配并填写数据缓冲区(一个字节类

45、型的数组一个字节类型的数组)n byte Buf=new byte256; n 存放从客户端接收的请求信息存放从客户端接收的请求信息.n4.创建一个创建一个DatagramPacketn packet=new DatagramPacket(buf, 256);n 用来从用来从socket接收数据接收数据,它只有两个参数它只有两个参数n 5. 服务器阻塞服务器阻塞n socket.receive(packet);n 在客户的请求报道来之前一直等待在客户的请求报道来之前一直等待53 8.7 Datagramn6. 从到来的包中得到地址和端口号从到来的包中得到地址和端口号n InetAddress

46、address=packet.getAddress();n int port=packet.getPort();n7. 将数据送入缓冲区将数据送入缓冲区n 或来自文件或来自文件,或键盘输入或键盘输入n8. 建立报文包建立报文包,用来从用来从socket上发送信息上发送信息n packet=new DatagramPacket n (buf,buf.length, address,port);n9. 发送数据包发送数据包 10.关闭关闭socketn socket.send(packet); socket.close();54 8.7 Datagramn客户端接收包的步骤如下客户端接收包的步骤如

47、下:1. 定义数据成员定义数据成员 int port; InetAddress address; DatagramSocket socket; DatagramPacket packet; byte sendBuf=new byte256;2. 建立建立socket socket=new DatagramSocket();55 8.7 Datagramn3. 向服务器发出请求报文向服务器发出请求报文n address=InetAddress.getByName(args0);n port=parseInt(args1);n packet=new n DatagramPacket(sendBuf

48、,256,address,port);n socket.send(packet);n 这个包本身带有客户端的信息这个包本身带有客户端的信息n4. 客户机等待应答客户机等待应答n packet=new DatagramPacket(sendBuf,256);n socket.receive(packet);(如果没有到就一直等待如果没有到就一直等待,因因此实用程序要设置时间限度此实用程序要设置时间限度) 56 8.7 Datagram5. 处理接收到的数据处理接收到的数据 String received=new String(packet.getData(),0);nSystem.out.pri

49、ntln(received);n数据报套接字首先是强调发送方和接收方的区数据报套接字首先是强调发送方和接收方的区别别,同时也指出服务器和客户之间的不同同时也指出服务器和客户之间的不同:n一个客户机必须事先知道服务器的地址和端口一个客户机必须事先知道服务器的地址和端口,以便进行出事连接以便进行出事连接n一个服务器从它接收到的数据报文中读取客户一个服务器从它接收到的数据报文中读取客户端的地址和端口端的地址和端口.57 8.7 Datagramn.建立数据报建立数据报socket();建立一个报文包建立一个报文包packet等待请求报文等待请求报文建立数据报建立数据报socket建立一个请求包建立一

50、个请求包发出请求发出请求获得对方地址获得对方地址构成信息包构成信息包发送出去发送出去创建接收包创建接收包等待接收等待接收588.8 小结小结n实现网络功能要靠实现网络功能要靠URL类类, URLConection类类, Socket类和类和DatagramSocket类类n网络上的数据传送是将网络连接转换成输入输网络上的数据传送是将网络连接转换成输入输出流出流nDataInputStream和和DataOutputStream (PrintStream)是网间流的载体是网间流的载体.nURL适用于适用于web应用应用,如访问如访问http服务器是高层服务器是高层服务服务nURLConectio

51、n的另一边通常是的另一边通常是cgi程序程序ncgi程序完成客户端与外部程序的交互程序完成客户端与外部程序的交互598.6 小结小结n向向cgi传送数据有传送数据有get和和post两种方法两种方法ncgi通过访问环境变量或读标准输入获得数据通过访问环境变量或读标准输入获得数据n回绕地址可用于在本地机器上调试网络程序回绕地址可用于在本地机器上调试网络程序nSocket适用于面向连接的适用于面向连接的,可靠性要求高的应用可靠性要求高的应用nDatagram适用于效率要求高的应用适用于效率要求高的应用nSocket是由是由IP和端口构成的一种网上通信链路和端口构成的一种网上通信链路的一端的一端nSocket通信要分别运行服务器和客户程序通信要分别运行服务器和客户程序n服务器程序是多线程的服务器程序是多线程的,可处理多个客户的请求可处理多个客户的请求60作业作业n编写一个会话程序编写一个会话程序n要求要求:n会话双方可以自由通话会话双方可以自由通话,看到对方发来看到对方发来“bye”则退出则退出

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号