049 网络编程.ppt_第1页
049 网络编程.ppt_第2页
049 网络编程.ppt_第3页
049 网络编程.ppt_第4页
049 网络编程.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、深入Java编程,专业教程,理论讲解部分,Ver3.1,第049课 网络编程,概述:,网络程序设计概述 Socket网络程序设计,重点:,难点:,Socket网络程序设计,Socket网络程序设计,1 java网络编程概述,第049课 网络编程,在java中对网络的操作就像对文件操作一样方便.,可以使用多线程来实现同时对多个网络连接进行处理,1.1 计算机的识别,在你想要连接到另外一台计算机上的时候,一定要使用某种方法来确定在网络上的你要连接的计算机.,第049课 网络编程,第一种就是我们常见的DNS.这是一种用单词组成得地址.我们经常访问网站使用得就是DNS地址.例如,第二种就是用点”.”分

2、隔开得4组数字组成得地址.例如:,这里要介绍的就是已经成熟的IP地址.IP地址有两种表达格式:,1 java网络编程概述,第049课 网络编程,无论什么格式,IP地址内部的表示都是一个32位得数字,所以在用数字表示得方式下每一个区域都不能超过255.,在java中可以使用InetAddress类来创建一个特殊得对象来保存这个地址.马上你将看到可以利用这个地址对象来创建一个socket.,1.1 计算机的识别,1 java网络编程概述,第049课 网络编程,1.2 服务器与客户端,网络连接不过就是两台计算机之间进行连接并且相互发送消息.一旦两台计算机发现了对方,那么就可以建立一

3、个双向得连接.,这就好像是两个人在游乐园走散了一样,他们如何找到对方:一台计算机站在那里原地不动,仔细得听着,另外一台计算机大声喊道:”你在哪啊?!”,1 java网络编程概述,第049课 网络编程,那个站在原地不动得计算机称作服务器,另外一个称作客户端.,服务器得任务就是负责监听连接,客户端得任务就是尝试去连接到服务器.,它们得区别仅仅是在相互寻找得过程中.一旦它们建立了双向连接,那么谁是服务器谁是客户端就无所谓了.,1.2 服务器与客户端,1 java网络编程概述,第049课 网络编程,IP地址创建了一个特殊得地址被称作本地地址(localhost)用来做没有网络资源得测试.在java中通

4、常使用如下方法获得这个地址:,如果你将参数置null,那么它将返回一个本地地址.这个地址只能用在这个特殊得环境下,所以在你打算使用在网络上时需要对这个地址进行处理.,InetAddress addr = InetAddress.getByName(null);,1.2 服务器与客户端,1 java网络编程概述,第049课 网络编程,1.3 端口,一个IP地址不能够准确得确定一个服务,因为在一台服务器上会同时有很多得服务存在.,端口不是一个物理设备,只是一个软件上对服务得一个标识. 在服务器上每一个端口代表唯一个服务,客户端应该在连接之前知道这个端口.,系统将1-1024作为保留端口,以提供系统

5、服务.所以你应该使用其它的端口.,1 java网络编程概述,2 Sockets,第049课 网络编程,Socket是在软件层对通讯两个端点的抽象.对于一个给定得连接,在每一台机器上都有它们自己的socket.,在java中.我们使用socket来建立计算机间的相互连接,然后我们通过socket得到输入输出流(InputStream and OutputStream ),使用这些IO流来传送我们要发送的消息.我们现在拥有两类socket使用:,SeverSocket,这是为服务器准备的.用来监听客户端的连接.,Socket,这是客户端用来连接服务器使用的.,第049课 网络编程,当客户端创建了一

6、个到服务器的连接,服务器会返回(通过accept()一个Socket来表述与客户端的连接.,Socket,从这时起,你就拥有了一个真正的Socket到Socket的连接,并且它们之间毫无差别.,2 Sockets,第049课 网络编程,它是服务器的连接器.它实际的工作就是等待这其他的机器来连接它,然后它会生成一个真正的Socket来进行连接.,你只需要一个端口就可以创建ServerSocket.你不必指定任何IP,因为它就是你本地机器的IP. 当连接创建后,ServerSocket会得到连接进来的Socket的地址信息.,ServerSocket,2 Sockets,第049课 网络编程,2.

7、1 例子,服务器首先监听一个网络连接,当连接成功建立以后,得到InputStream和OutputStream.,例子描述,他们通过Reader和Writer装饰一下,然后在经过BufferedReader 和PrintWriter的装饰.此时开始真正的信息传递.,服务器会从BufferedReader读出所有从客户端发送的消息并从PrintWriter发送出去,直到收到”END”为止.然后关闭网络连接.,2 Sockets,第049课 网络编程,客户端创建一个Socket来连接到服务器,然后像服务器一样创建IO流并装饰一下.然后发送几行文本信息,同时注意收听服务器会有什么反应.,2.1 例子

8、,2 Sockets,第049课 网络编程,import java.io.*; import .*; public class JabberServer public static final int PORT = 8080; public static void main(String args) throws IOException ServerSocket s = new ServerSocket(PORT); System.out.println(Started: + s); try Socket socket = s.accept(); try System.out.println(

9、 Connection accepted: + socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream();,line: 01,line: 02,line: 03,2.1 例子,2 Sockets,第049课 网络编程,PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream(),true); while (true)

10、String str = in.readLine(); if (str.equals(END) break; System.out.println(Echoing: + str); out.println(str); finally System.out.println(closing.); socket.close(); finally s.close(); /:,line: 04,line: 05,2.1 例子,2 Sockets,第049课 网络编程,line:01,这里你会看到到,创建一个ServerSocket只需要一个端口(port).,line: 03,当调用accept()的时

11、候,这个函数会发生阻塞直到有客户端连接进来.在它等待连接的时候其他的线程是可以正常运行的.当一个连接创建后,accept()会返回一个Socket对象用来描述这个连接.,2.1 例子,2 Sockets,第049课 网络编程,这里我们要注意确保sockets能够被干净的清除.,line: 02,try-finally块会保证无论任何情况,ServerSocket都会被安全的关闭.,line: 05,line: 03,line: 04,try-finally块来保证Soecket可以被安全的关闭.,Socket是非常重要的内存资源,所以使用时要非常的小心.你必须确保Socket能够正确的清除.,

12、2.1 例子,2 Sockets,第049课 网络编程,下面我们来看看客户端是如何利用创建的Socket来生成IO流进行读写操作的.,将InputStream和OutputStream两个对象分别用InputStreamReader和OutputStreamWriter包装一下.,然后,利用InputStreamReader和OutputStreamWriter对需要在网络传输的数据进行处理,2.1 例子,2 Sockets,第049课 网络编程,import .*; import java.io.*; public class JabberClient public static void

13、main(String args) throws IOException InetAddress addr = InetAddress.getByName(null); System.out.println(addr = + addr); Socket socket = new Socket(addr, JabberServer.PORT); try System.out.println(socket = + socket); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream(

14、);,2.1 例子,2 Sockets,第049课 网络编程,PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(),true); for(int i = 0; i 10; i +) out.println(howdy + i); String str = in.readLine(); System.out.println(str); out.println(END); finally System.out.println(closing.); s

15、ocket.close(); /:,2.1 例子,2 Sockets,小结:,IP地址 端口 ServerSocket Socket flush操作,第049课 网络编程,1、如下不是IP地址的是( ) A) B) C) D) 2、一个网络连接首先是由谁发起的( ) A)服务器 B)路由器 C)客户端 D)网关 3、能够监听网络连接的类是( ) A)ServerSocket B)Socekt C)Flush D)PrintWriter,小测验(单选题):,第049课 网络编程,1、如下不是IP地址的是( c) A)192.16

温馨提示

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

评论

0/150

提交评论