java课件中级5java网络编程上_第1页
java课件中级5java网络编程上_第2页
java课件中级5java网络编程上_第3页
java课件中级5java网络编程上_第4页
java课件中级5java网络编程上_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、Java网络编程ID:SCSJ002-J2SEJava网络编程Java网络编程网络基础Internet的形成和发展网络通信协议网络通信结构TCP/IPSocketJava Socket编程利用多线程实现双向的Socket通信UDP 与 UDP数据广播 Java网络编程网络基础知识网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模宏大、功能强大的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。计算机的联网可以实现:使用远程资源共享信息、程序和数据分布处理Java网络编程计算机网络分类按照网络规模和范围可以简单划分为:局域网(LAN,Lo

2、cal Area Network)都市网(MAN,Metropolis Area Network)广域网(WAN,Wide Area Network)按照网络拓扑结构可以分为:星型网络、总线网络、环线网络、树型网络、星型环线网络等按照传输介质划分:双绞线、同轴电缆、光导纤维、视线介质等Java网络编程网络的几种工作模式专用服务器结构(Server-Based) 又称为“工作站文件服务器”结构,由若干台微机工作站与一台或多台文件服务器通过通信线路连接起来组成工作站存取服务器文件,共享存储设备。 客户机/服务器模式(clientserver) 其中一台或几台较大的计算机集中进行共享数据库的管理和存

3、取,称为服务器,而将其它的应用处理工作分散到网络中其它微机上去做,构成分布式的处理系统。 对等式网络:(Peer-to-Peer)在对等式网络结构中,没有专用服务器 每一个工作站既可以起客户机作用也可以起服务器作用。 Java网络编程Internet基础Internet的形成和发展:第一阶段(19691983):1969年,美国ARPANET诞生,用于将几个军事及研究用的主机联系起来。1983年,TCP/IP应用到ARPANET中,使得internet得以迅速发展。以ARPANET 为中心,组成新的互联网(internet),称为Internet。第二阶段(19831994):用于教育和科研领

4、域的NSFNET(National Science Foundation Net)形成第三阶段(1994Now):Internet的商业化运作。Java网络编程网络通信协议/接口网络通信协议 计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。 网络通信结构为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间 能进行信息交换。接口包括两部分:硬件装置:实现结点之间的信息传送 软件装置:规定双方进行通信的约定协议Java网络编程OSI的分层思想OSI:开放系统互连(Open System Interconnecti

5、on),采用分层的结构化技术。分层的理由:将网络简化模块化的设计网络OSI参考模型(OSI/RM,Open System Interconnection/Reference Model)共分为7层,最高层为用户层,最底层为物理层。Java网络编程OSI的七层模型表 示应 用会 话网 络传 输数据链路物 理Java网络编程TCP协议Transmission Control Protocol TCP协议为一种可靠的端对端协议:重发一切没有收到的数据,进行数据内容准确性检查并保证分组的正确顺序。TCP协议位于OSI参考模型的传输层表 示应 用会 话网 络传 输数据链路物 理TCPJava网络编程IP

6、协议IP协议是网络上的计算机进行连接的基础IP协议是不可靠的:无论传送正确与否都不进行检验、不回送确认、不保证分组的正确顺序IP协议位于OSI参考模型的网络层表 示应 用会 话网 络传 输数据链路物 理IPJava网络编程TCP/IP协议TCP/IP:是Internet上不同系统之间互联的一组协议。它为分散和不同类型的硬件提供了一个通用的编程接口。TCP/IP 协议使Internet尽可能成为一个分散、无序的网络。TCP/IP通常被看成一个4层模型:应用层、传输层、网络层以及数据链路层+物理层。Java网络编程OSI和TCP/IP的分层对应OSI 参考模型表 示应 用会 话网 络传 输数据链路

7、物 理应 用网 络传 输物理+数据链路TCP/IP 参考模型Java网络编程数据的封装和拆封位于TCP/IP各个层的数据通常用一个公共的机制来封装:定义描述元信息和数据报的部分真实信息的报头的协议,这些元信息可以是数据源、目的地和其他的附加属性。来自于高层的协议封装在较低层的数据报中,当信息在不同的层之间传递时,都会在每一层重新构建一次。Java网络编程IP地址的分配IP地址的定义为了实现Internet上不同计算机之间的通信,每台计算机都必须有一个不与其它计算机重复的地址-IP地址IP地址是数字型的,32位(32bit),由4个 8位的二进制数组成,每8位之间用圆点隔开网络标识(networ

8、k id)和主机标识 (host id)IP地址被分成了A、B、C、D、E五类,每个类别的网络标识和主机标识各有规则。Java网络编程网络IP地址的构成1Bits:0NNNNNNNHostHostHost891617242532Range (1-126)110NNNNNNNetworkHostHost891617242532Range (128-191)1110NNNNNNetworkNetworkHost891617242532Range (192-223)Bits:Bits:Class A:Class B:Class C:11110NNNNNetworkNetworkHost8916172

9、42532Range (224-239 )Bits:Class D:Java网络编程常见 TCP 端口和对应服务端口对应服务 7 Echo服务器21Ftp23telnet25SMTP53DNS79Finger80HTTP110POP3Java网络编程端口(port)计算机与外界交流的出入口是一种抽象的软件结构,包括一些数据结构和I/O(基本输入/输出)缓冲区端口号可以从0到65535,通常将它分为三类:公认端口(Well Known Ports):从0到1023,它们紧密绑定(Binding)一些服务注册端口(Registered Ports):从1024到49151。它们松散地绑定一些服务动

10、态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口Java网络编程Java中的“ping”在命令行中,可以通过“ping host”的方法得到指定主机的IP地址通过 中的InetAddress类,可以得到指定主机的IP地址如果没有指定机器,则将会返回本地主机的IP地址InetAddress ia = InetAddress.getLocalHost();InetAddress ia = InetAddress.getByName(“ puterName”);Java网络编程Socket套接字(Socket ):

11、表示一个系统的IP地址和端口号的结合。TCP/IP连接的一个端点用来处理两个流对象创建TCP Socket需要的四个信息:本地系统的IP本地应用程序使用的TCP端口号远程系统的IP远程应用程序相应的TCP端口号Java网络编程Java Socket编程 .Socket两个类用于建立一个双边的通信。ServerSocket等待来自客户端的连接,而Socket 连接到一个服务器端。Server端ServerSocket s (port #)s.accept()/等待连接SocketOutputStreamInputStreamsocket.close()Client端Socket (host, p

12、ort #)(试图连接)OutputStreamInputStreamsocket.close()Java网络编程ServerSocket类ServerSocket类用于侦听一个客户端的Socket连接,如果没有连接,它将一直等待。ServerSocket构造器:ServerSocket(int port):用指定的端口port来创建一个侦听SocketServerSocket(int port,int backlog,InetAddress localAddr):在机器存在多个 IP地址的情况下,允许通过localAddr 这个参数来指定侦听的IP地址。ServerSocket方法:Sock

13、et accept()close()Java网络编程Socket类Socket类构造器Socket()Socket(InetAddress address, int port)Socket(String host, int port)protected Socket(SocketImpl impl) Socket(String host, int port, InetAddress localAddr, int localPort) Socket方法:getInputStream()getOutputStream()close()Java网络编程Socket简单通信例子ServerSocket

14、 server = new ServerSocket(1234);Socket sk = server.accept();BufferedReader br = new BufferedReader(new InputStreamReader(sk.getInputStream();String str = br.readLine();System.out.println(str);br.close();server.close();Java网络编程Socket通信例子Socket client = null;PrintStream ps= null;try client = new Sock

15、et(localhost,1234); System.out.println(连接成功); OutputStream os = client.getOutputStream(); ps = new PrintStream(os); ps.println(Hello); client.close();catch(IOException e) System.out.println(e);Java网络编程Socket持续通信例子ServerSocket server = new ServerSocket(1234);Socket sk = server.accept();BufferedReader

16、 br = new BufferedReader(newInputStreamReader(sk.getInputStream();String str = null;while(str = br.readLine()!= null) if(quit.equalsIgnoreCase(str) break; System.out.println(+OK.);br.close();server.close();Java网络编程Socket持续通信例子try Socket client = new Socket(localhost,1234); System.out.println(连接成功);

17、PrintStream ps= new PrintStream(client.getOutputStream(), true); BufferedReader brKey = new BufferedReader(new InputStreamReader(System.in); String line = null; while(line = brKey.readLine() != null) ps.println(Hello); client.close();catch(IOException e) System.out.println(e);Java网络编程多线程实现双向的Socket通

18、信(1)public class Server public static void main(String args) ServerSocket ss = new ServerSocket(8888); while (true) Socket socket = ss.accept();/ 阻塞SessionThread st = new SessionThread(socket);st.start(); Java网络编程多线程实现双向的Socket通信(2)public class SessionThread extends Thread Socket socket; public Sess

19、ionThread(Socket socket) this.socket = socket; public void run() InputStream in = socket.getInputStream();OutputStream out = socket.getOutputStream();PrintWriter pw = new PrintWriter(out, true);pw.println(欢迎光临);BufferedReader br = new BufferedReader(new InputStreamReader(in);String line = null;while

20、 (line = br.readLine() != null) if (quit.equalsIgnoreCase(line) break; System.out.println(line);in.close();br.close();pw.close();socket.close();Java网络编程课堂练习从客户端输入Create user指令,系统提示输入用户名和密码,保存到文件中;从客户端输入delete user指令,系统提示输入用户名,然后从文件中将输入的用户删除;从客户端输入update user指令,系统提示输入用户名和密码,然后将文件里的用户的密码修改为新输入的密码。从客户端

21、输入list user指令后,马上把文件里所有的用户打印到客户端,密码不打印。Java网络编程CRUD基本原理:Java网络编程CRUD最佳实践:public class PropertiesFactory static Properties properties; public static Properties getProperties() if (properties = null) properties = new Properties(); InputStream in = new FileInputStream(d:perties); properties.load(in); i

22、n.close(); return properties; Java网络编程课堂练习连接到HTTP服务器, 获取指定的页面数据.Java网络编程UDP(User Datagram Protocol) 与TCP 协议之间的不同在于 UDP 不是一种基于稳定连接的通讯协议。UDP 协议将独立的数据包从一台计算机传 输到另外一台计算机,但是并不保证接受方能够接收到该数据包,也不保证接收方 所接收到的数据和发送方所发送的数据在内容和顺序上是完全一致的。因此,UDP 协议更类似于普通邮政服务,寄信人不能够保证所寄出去的信能够被收信人及时收 到,后发出的信也许会比先发出的信更早到达。 Java网络编程Da

23、tagramSocket 首先构造一个数据报,然后把它发送出去,同时我们也可以接收数据报。在java中提供了DatagramPacket和DatagramSocket两个类来完成这样的任务,前者负责构造数据报后者负责发送和接收。DatagramPacket(封装数据:数据报)DatagramSocket(套接字:发送数据报的通道)Java网络编程DatagramPacket的构造器构造数据报用来发送数据的时候DatagramPacket(byte buf, int length, InetAddress address, int port) DatagramPacket(byte buf, i

24、nt offset, int length, InetAddress address, int port) DatagramPacket(byte buf, int offset, int length, SocketAddress address) DatagramPacket(byte buf, int length, SocketAddress address) 用来接收数据的时候无需指定ip和portDatagramPacket(byte buf, int length) DatagramPacket(byte buf, int offset, int length) Java网络编程

25、DatagramSocket的构造器DatagramSocket() DatagramSocket(DatagramSocketImplimpl) DatagramSocket(intport) DatagramSocket(intport, InetAddressladdr) DatagramSocket(SocketAddressbindaddr) Java网络编程DatagramPacket的构造器DatagramSocket socket = new DatagramSocket();while (true) byte buffer = new Date().toString().ge

26、tBytes(); InetAddress host= InetAddress.getByName(“IP); DatagramPacket packet = new DatagramPacket(buffer,buffer.length,host,8989); socket.send(packet); Thread.sleep(500);Java网络编程DatagramPacket的构造器DatagramSocket socket = new DatagramSocket(8989);while (true) byte buffer = new byte256; DatagramPacket

27、 packet = new DatagramPacket(buffer,buffer.length); socket.receive(packet); System.out.write(packet.getData(),0,packet.getData().length); System.out.println(); Thread.sleep(500);Java网络编程UDP数据广播 在通用的以太网(Ethernet)构架下,计算机于计算机之间的数据交换都是通过交换机来完成的。如果一份数据需要被传送给多个接收者,在使用TCP/IP连接的情况下,数据发送者需要向交换机发送N 个同样的拷贝,而交换

28、机则负责将这N 个拷 贝分发给所有的接收者;在使用UDP 数据广播的情况下,数据发送者只需要向交换机发送一个拷贝,交换机负责将这个信息制作N 个拷贝发送给所有的机器。在这种情况下,使用TCP/IP连接会大大的增加网络的负担。在一个普通局域网络中,可以认为由于网络状况较差而造成数据丢失的可能性比较小,而利用UDP 数据广播进行 数据交换能够大幅度减轻网络的负担 Java网络编程MulticastSocket(receive) MulticastSocket s = new MulticastSocket(6789);InetAddress group =InetAddress.getByName();s.joinGroup(group);while (true) byte b = new byte256; DatagramPacket packet = new DatagramPacket(b,buffer.l

温馨提示

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

评论

0/150

提交评论