版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Socket 编程,Socket编程,1、包,4、Socket类,3、ServerSocket类,5、数据报式套接字中所需的类,2、InetAddress类,包简介,包:用于网络通信的类。 .InetAddress:互联网地址类 .URL:统一资源定位类 .Socket:套接字类 .ServerSocket:服务器套接字类 .DatagramPacket:数据报类 .DatagramSocket:数据报套接字类,Socket编程,2、InetAddress类,功能简介 InetAddress类又称为互联网地址类,。 该类的对象是封装计算机名称和IP地址的实例。 可以使用主机名来获取InetAd
2、dress的实例,或者使用IP地址来构造InetAddress的实例。 InetAddress对域名进行解析是使用本地机器配置或者网络命名服务(如域名系统DNS)和网络信息服务(Network Information Service,NIS)来实现的。,Socket编程,获取InetAddress类对象的方法 InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态方法来获取。 1)public static InetAddress getByName(String hostname); 根据给定的主机名hostname,InetAddress会尝试做连接DNS服务
3、器,并返回该主机名对应的InetAddress 对象。 如果找不到主机会抛出UnknownHostException异常。 InetAddress i= InetAddress.getByName(“”); System.out.println(i); ,2、InetAddress类,Socket编程,获取InetAddress类对象的方法 1)public static InetAddress getByName(String hostname); hostname的值可为IP地址字符串,此时可以利用InetAddress对象的getHostName( )方法按IP地址反向查找。 如果没有查
4、到相应的主机名,getHostName( )返回的点分十进制的地址字符串。 InetAddress i= InetAddress.getByName(“107.23.216.196”); System.out.println(i); /107.23.216.196 System.out.println(i.getHostName(); /查到相应的主机名 ec2-107-23-216-pute-,2、InetAddress类,Socket编程,获取InetAddress类对象的方法 1)public static InetAddress getByName(String hostname);
5、hostname的值可为IP地址字符串,此时可以利用InetAddress对象的getHostName( )方法按IP地址反向查找。 如果没有查到相应的主机名,getHostName( )返回的点分十进制的地址字符串。 InetAddress i= InetAddress.getByName(“60.215.128.247”); System.out.println(i); /60.215.128.247 System.out.println(i.getHostName(); /没查到相应的主机名 60.215.128.247,2、InetAddress类,Socket编程,获取InetAdd
6、ress类对象的方法 2)public static InetAddress getAllByName (String hostname); 获取具有相同名字hostname的一组InetAddress 对象。 如果找不到主机会抛出UnknownHostException异常。 InetAddress inetOfbaidu= InetAddress.getAllByName(“); for(int j=0;jinetOfbaidu.length;j+) System.out.println(inetOfbaiduj); ,2、InetAddress类,Socket编程, ,获取InetAdd
7、ress类对象的方法 3)public static InetAddress getLocalHost(); 返回本机的InetAddress对象。 查找出错,抛出UnknownHostException InetAddress ipOfLocal = InetAddress.getLocalHost(); System.out.println(ipOfLocal); Lenovo-PC/192.168.1.102,2、InetAddress类,Socket编程,获取InetAddress类对象的方法 4)public static InetAddress getByAddress(byte
8、addr) 根据给定的addr,返回其对应的InetAddress对象。,2、InetAddress类,Socket编程,byte address = (byte)107,(byte)23,(byte)216,(byte)196; InetAddress x = InetAddress.getByAddress(address); System.out.println(x); System.out.println(x.getHostName(); /107.23.216.196 ec2-107-23-216-pute-,3.1、ServerSocket类简介,J.ServerSocket类 S
9、erverSocket类用在服务器端,侦听和响应客户端的连接请求。 ServerSocket类的主要任务: 服务器端耐心地等候客户端的连接请求,一旦客户端应用程序申请建立一个Socket连接,ServerSocket类就会通过accept()方法返回一个对应的服务器端Socket对象,以便进行直接通信。 从两台计算机连接成功时起,服务器端与客户端就得到了一个真正的“Socket-Socket”连接。,Socket编程,3、ServerSocket,构造方法重载形式之一 public ServerSocket(int port) throws IOException 创建一个指定端口号的服务器端
10、的ServerSocket对象。 连接请求队列的最大队列长度为50,若连接请求到达时队列已满,则拒绝连接。 若无法创建Socket并绑定于所请求的端口号则抛出IOException异常。 参数 port:端口号。,3.2、ServerSocket类构造方法,Socket编程,构造方法重载形式之二 public ServerSocket(int port,int backlog) throws IOException 参数: backlog:连接请求队列的最大长度。,3.2、ServerSocket类构造方法,Socket编程,构造方法重载形式之三 public ServerSocket(int
11、 port,int backlog,InetAddress bindAddr) throws IOException 参数: bindAddr:需指定的要绑定到的本地IP地址。 主要用于在多IP地址系统上运行的服务器。服务器Socket只在指定的地址侦听入站连接,不会侦听通过主机其他地址进入的连接。其他构造函数默认绑定本地主机的所有IP地址。当bindAddr为null时,缺省地接受对任何所有本地IP地址的连接。,3.2、ServerSocket类构造方法,Socket编程,1)public InetAddress getInetAddress() 返回服务器Socket的本地地址信息。 2)
12、public int getLocalPort() 服务器socket正在监听的端口号。 3)public String toString() 返回该socket的字符串表示,3.3、ServerSocket类其他方法,Socket编程,4)public Socket accept() throws IOException 功能:在服务器端指定端口侦听客户端发出的连接请求。 该方法一直阻塞直到连接成功。 如果服务器端与客户端连接成功,该方法将返回一个新的Socket对象,通过该Socket对象与客户端的Socket对象进行通信。 若等待连接时发生I/O错误则抛出IOException异常。,3
13、.3、ServerSocket类其他方法,Socket编程,.Socket类 Java用来实现客户端TCP操作的基础类。 在Java编程中Socket类负责一切与TCP有关的操作,包括连接的建立、传输、连接关闭及Socket选项的设置等操作。 Socket类的输入输出都是通过流来实现的。,Socket编程,4、Socket类,4.1、Socket类构造方法,Socket类的构造方法 Socket对象的创建可通过使用Socket类的构造方法完成。 构造方法的功能: 1)创建Socket对象 2)客户端负责呼叫,尝试向服务器发起连接请求,连接服务器端的Socket。 通过构造方法可以测试能否和主机
14、的某个端口建立连接。,Socket编程,构造方法重载形式之一 public Socket(String host,int port) throws UnknownHostException, IOException 参数: host:服务器主机名。 port:端口号。 功能: 在客户端以指定的服务器host和端口号port创建一个Socket对象,并向服务器发出连接请求。 在二者建立连接的过程中,由客户机负责发起呼叫。,4.1、Socket类构造方法,Socket编程,构造方法重载形式之一 public Socket(String host,int port) throws UnknownHo
15、stException, IOException 异常的抛出: UnknownHostException:若域名服务器无法解析该服务器名或域名服务器没有运行,此时host无法可知,则抛出UnknownHostException异常 IOException:若生成Socket时发生I/O错误则抛出IOException异常。,4.1、Socket类构造方法,Socket编程,构造方法重载形式之二 public Socket(InetAddress addr,int port) throws IOException 参数: addr:服务器地址信息InetAddress类对象,4.1、Socket
16、类构造方法,Socket编程,构造方法重载形式之三 public Socket(InetAddress address,int port,InetAddress localAddr,int localPort) throws IOException 功能: 生成一个Socket并且连接到由address指定的服务器的端口port上。该Socket将捆绑到由localAddr指定的本地主机的localPort端口上。,4.1、Socket类构造方法,Socket编程,public InetAddress getInetAddress() 返回连接到socket的远程主机的IP地址信息对象。 pu
17、blic InetAddress getLocalAddress() 返回socket关联的本地主机的IP地址信息对象。 public int getPort() 返回socket连接到的远程服务的端口号。 public int getLocalPort() 返回该Socket绑定在本地计算机上的端口号。,4.2、Socket类其他方法,Socket编程,public InputStream getInputStream() throws IOException 为当前的socket对象创建输入流。 public OutputStream getOutputStream() throws IO
18、Exception 为当前的socket对象创建输出流。 public String toString() 转换该Socket成一个String字符串表示 。 public synchronized void close() throws IOException 关闭建立的Socket连接。当通信结束时,应调用该方法关闭Socket连接。若在关闭Socket连接时发生I/O错误则抛出IOException异常。,4.2、Socket类其他方法,Socket编程,Socket编程,5.2 数据报式套接字中所需的类,DatagramPacket类 数据报封装类。把具体的要传输的信息,包含IP地址,
19、端口号和需要传输的数据等封装在称为数据报(Datagram)的UDP包中。 DatagramSocket类 用于收发UDP数据报的套接字接口类。 为发送数据,要将数据封装到DatagramPacket中,使用DatagramSocket发送该包。 要接收数据,要从DatagramSocket中接收一个DatagramPakcet对象,然后解析该包的内容,Socket编程,5.3 DatagramSocket类,功能 该类表示用来发送和接收数据报的套接字(Socket)。要收发DatagramPacket,必须创建一个数据报套接字DatagramSocket。,构造方法 public Datag
20、ramSocket() throws SocketException 功能:创建用于数据报通信的socket对象,由本地主机自动指定的一个可用的端口号。 DatagramSocket socket=new DatagramSocket(); /创建一个用于收发数据报的DatagramSocket对象,Socket编程,5.3 DatagramSocket类,构造方法 public DatagramSocket(int port) throws SocketException 功能:创建用于数据报通信的socket对象,并且把它绑定到本地主机指定的端口port。 public DatagramS
21、ocket(int port,InetAddress addr) throws SocketException 功能:创建用于数据报通信的socket对象,并绑定到指定的本地地址addr的指定端口port。 DatagramSocket socket=new DatagramSocket(3000); /在端口3000创建用于通信的Socket对象,Socket编程,5.3 DatagramSocket类,常用方法 public void send(DatagramPacket p) throws IOException 功能:将数据报p发送出去。 public synchronized vo
22、id receive(DatagramPacket p) throws IOException 功能:从网络接收一个UDP数据报包,并存储在DatagramPacket类对象p中。该数据报p还包含发送方的IP 地址和发送方主机的端口号。,Socket编程,5.3 DatagramSocket类,public int getLocalPort() 功能:获取该socket绑定的本地主机的端口号。 public void close() 功能:释放该数据报socket所占用的端口。,常用方法 public InetAddress getLocalAddress() 功能:获取该socket绑定的本
23、地地址。,Socket编程,5.4 DatagramPacket类,功能 是进行数据报通信的基本单位。包含了IP地址、端口号和需要传输的数据等。在发送和接收数据报时,要创建DatagramPakcet类对象作为数据的载体。,构造方法之一:发送用的数据报 public DatagramPacket(byte ibuf,int ilength,InetAddress iaddr,int iport) 构造方法之二:接收用的数据报 public DatagramPacket(byte ibuf,int ilength),Socket编程,5.4 DatagramPacket类,构造方法之一:发送用的
24、数据报 public DatagramPacket(byte ibuf,int ilength,InetAddress iaddr,int iport) 功能: 创建一个用于发送数据报的DatagramPacket类对象。 参数: ibuf:存储数据包的缓冲区。 ilength:发送数据包的长度,必须小于等于ibuf.length。 iaddr:数据报要发送到的目的IP地址。 iport:数据报要发送到的目的地址的端口号。,Socket编程,5.4 DatagramPacket类,构造方法之一:发送用的数据报 public DatagramPacket(byte ibuf,int ilengt
25、h,InetAddress iaddr,int iport) 举例: String date=new Date().toString();/获取服务器当前时间 buf=date.getBytes();/将当前日期时间存入字节数组buf packet=new DatagramPacket(buf, buf.length, addr, port); /构造发送数据报包 socket.send(packet);/发送数据报,Socket编程,5.4 DatagramPacket类,构造方法之一:接收用的数据报 public DatagramPacket(byte ibuf,int ilength)
26、功能: 创建一个用于接收数据报的DatagramPacket类对象。 参数: ibuf:存储数据包的缓冲区。在数据报通信中,发送和接收一个数据报,都需提供一个缓冲区,用来安置发送和接收到的数据报。 ilength:接收数据包的长度,必须小于等于ibuf.length。 举例: DatagramPacket packet=new DatagramPacket(buf,buf.length); socket.receive(packet);/接收数据报,Socket编程,5.4 DatagramPacket类,常用方法之解析数据报的方法 (1)public synchronized InetAddress getAddress() 功能:返回存放在接收或发送的数据报中的远程主机的IP地址。 (2)public synchronized int getPort() 功能:返回存放在接收或发送的数据报中的远程端口号。 (3)public synchronized byte getData() 功能:返回一个字节数组,其中包含数据报中的数据。 (4)public synchronized int getLength() 功能:返回数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 24328.5-2026卫生纸及其制品第5部分:定量的测定
- 2026秋统编版四上语文 第8课古诗三首《暮江吟·题西林壁·雪梅》(分层作业)(含答案)
- 2026硕士的英文面试题及答案
- 2026司机辅警面试题目及答案
- CT报告汇报课件
- 2026四川旅游面试题库及答案
- 2026四川幼教面试题库及答案
- 2026四大卫校面试题及答案
- 猝死自救课件
- 慈善制度课件
- 2026年湘教版初中八年级数学上册(全册)知识点总结
- 《智慧广场-合理安排时间》教案(2课时)-2026-2027学年青岛版(新教材)小学数学六年级上册
- 课件-试点地区的增值税纳税申报表填报实务(一)
- 本科《伤寒论》太阳病篇(一)教学设计-六经辨证体系与太阳病纲领
- 《水质-9种酯类化合物的测定 吹扫捕集-气相色谱-质谱法》
- 2026中铝科学技术研究院有限公司(中铝集团未来科学技术研究院)面向中铝集团内部招聘笔试历年备考题库附带答案详解
- GB/T 47260.6-2026钢轨扣件系统试验方法第6部分:耐恶劣环境条件试验方法
- 11BS4排水工程华北标图集
- 小学三年级语文上册课外阅读叶圣陶芳儿的梦
- 泰国政治概况
- 《黄帝内经》理论与女子不月的治法解读课件
评论
0/150
提交评论