




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Socket 接口用法详解 在 Java 中,基于 TCP 协议实现网络通信的类有两个,在客户端的 Socket 类和在服务器端 的 ServerSocket 类,ServerSocket 类的功能是建立一个 Server,并通过 accept()方法随时监 听客户端的连接请求。 扩展: ServerSocket 中常用的构造函数及方法 构造函数:ServerSocket(int port) 这是一个构造方法,用于在当前的服务器默认的 IP 地址上监听一个指定的端口,即在指定的 IP 和端口创建一个 ServerSocket 对象 方法: Socket accept() 产生阻塞,监听指定的端口,直至有客户端发来连接请求 void close() 关闭当前 ServerSocket InetAddress getInetAddress() 返回 ServerSocket 监听的,本机的 IP 地址 int getLocalPort() 返回 ServerSocket 监听的,本机的 IP 地址上指定的端口号 int getSoTimeout();void setSoTimeout(int timeout) 设置连接过程中没有得到相应的 等待期限时间(TimeOut) String toString() 以字符串的方式返回 ServerSocket 监听的,本机的 IP 地址及其端 口号 Socket 类中常用的构造函数和方法 构造函数:Socket(InetAddress address,int port) 用于创建一个链接,向指定的 IP 地 址上指定的端口的服务器端程序发送连接请求 Socket(String host,int port) 同上,但该方法允许通过主机名字符串向服务器发送连 接请求 方法: void close()关闭当前的 Socket 连接 InetAddress getInetAddress() 返回 Socket 建立了连接的服务器的 IP 地址 InputStream getInputStream() 返回当前 Socket 的输入流 OutputStream getOutStream() 返回当前 Socket 的输出流 InetAddress getLocalAddress() 返回和 Socket 进行连接的本地的 IP 地址 int getLocalPort() 返回和 Socket 进行连接的本地的端口号 int getPort() 返回和 Socket 建立了连接的服务器的端口号 int getSoTimeOut();void setSoTimeOut(int timeout) 设置连接过程中没有得到相应的 等待期限时间 String toString () 以字符串的方式返回 Socket 的属性信息 Socket 类的构造方法包括以下几种: public Socket(String host,int port) public Socket(InetAddress address,int port) public Socket(String host,int port,InetAddress localAddr,int localPort) public Socket(InetAddress host,int port, InetAddress,localAddr,int localPort) 在 JDK1.1 以前,Socket 类可同时用于 TCP/UDP 通信: public Socket(String host,int port,Boolean stream) public Socket(InetAddress host,int port, Boolean stream) Socket 类的输入/输出流管理包括以下方法: public InputStream getInputStream() public void shutdowmInput() public OutputStream get OutputStream () public void shutdowmOutput() 以上这些方法都将抛出 IOException 异常,程序中需要捕获并处理。 关闭 Socket 的方法为: public void close() throws IOException 设置/获取 Socket 数据的方法为: public InetAddress getInetAddress() public int getPort() public void setSoTimeout(int timeout) 这些方法都将抛出 SocketException 异常,程序中需要捕获并处理。 ServerSocket 类的构造方法包括以下几种: public ServerSocket (int Port) public ServerSocket (int Port,int backlog):支持指定数目的连接 public ServerSocket (int Port,int backlog,InetAddress bindAddr) 这些方法都将抛出 IOException 异常,程序中需要捕获并处理。 public Socket accept():等待客户端的连接 public void close():关闭 Socket 设置/获取 Socket 数据的方法包括: public InetAddress get InetAddress () public int getLocalPort() public void setSoTimeout(int timeout) 这些方法都将抛出 SocketException 异常,程序中需要捕获并处理。 Socket 的基本概念 1建立连接 当需要建立网络连接时,必须有一台机器运行一个程序,随时等候连接,而另一端的程序 这对其发出连接请求。这一点同电话系统类似必须有一方拨打电话,而另一方必须等 候电话连通。建立连接的过程为: (1)现在服务器端生成一个 ServerSocket 实例对象,随时监听客户端的连接请求。 (2)当客户端需要连接时,相应地要生成一个 Socket 实例对象,并发出连接请求,其中 host 参数指明该主机名,port# 参数指明该主机端口号。 (3)服务器端通过 accept()方法接收到客户端的请求后,开辟一个接口与之进行连接,并 生成所需的 I/O 数据流。 (4)客户端和服务器端的通信都是通过一对 InputStream 和 OutputStream 进行的,通信结 束后,两端分别关闭对应的 Socket 接口。 2.连接地址 打电话时,呼叫方必须事先知道所需拨打的号码,而程序建立网络连接时,也同样需要知 道地址或主机名称。另外,网络连接还需要一个端口号(可以将其当作电话的分机号) ,连 接到正确的主机之后,需要对该连接确认特定口令。某些情况下,还需要使用一个扩展号 码与网络计费系统相连,于是相应地要有一个特定端口号用于连接计费程序。 3.端口号 在 TCP/IP 系统中,端口号由 16 位二进制整数组成,即在 0-65535 之间。实际应用中,前 1024 个端口号已经预先定义为一些特定服务,因此一般不能使用,除非想同这些服务器进 行连接(如 Telnet,SMTP,mail,ftp 等) 。在两个程序连接之前,彼此之间必须达成一致, 即由客户端负责初始化连接,而服务器随时等候请求。只有客户端和服务器端指定端口号 一致时连接才会建立。如果系统中两个程序所用端口号不一致,这连接无法建立。 4.网络连接模式 在 Java 中,TCP/IP 接口的连接是由 包中的类实现的。如图表示的是 Socket 连接过 程中客户端和服务器端的工作原理。 每个 server 端都拥有一个端口号,一台机器上如果运行多个服务,这可能对应多个端口号。 通信结束后,两端分别关闭对应的 Socket 接口,而不影响其他的端口。 Socket 通信的基本步骤 使用 Socket 方式进行网络通信的程序基本结构都是类似的,无论一个 Socket 通信程序的功 能多么齐全、程序多么复杂,其基本结构都是一样的。客户端与服务器端进行通信的过程 都包括以下四个基本步骤: (1)在服务器端指定一个用来等待连接的端口号,在客户端规定一个主机和端口号,从而 在客户端和服务器端创建 Socket/ServerSocket 实例。 (2)打开连接到 Socket 的输入输出流。 (3)利用输入输出流,按照一定的协议对 Socket 进行读写操作。 (4)关闭输入输出流和 Socket 通常,程序员的主要工作时针对所要完成的功能砸器第(3)步进行编程,第(1) 、 (2) 、 (4)步对所有的通信程序来说几乎都是一样的。 Socker 通信的程序设计 1.服务器端程序 TCP/IP 服务器端应用程序是通过 Java 语言中提供的 ServerSocket 和 Socket 这两个有关网 络的类来实现的。而 ServerSocket 类除了建立一个 Server 之外,还通过 accept()方法提供了 随时监听客户端连接请求的功能,它的构造方法有以下两种。 ServerSocket(int port) ServerSocket(int port,int backlog) 其中 port 是指连接中对方的端口号,backlog 则表示服务器端所能支持的最大连接数。下面 的程序用来监听客户端应用程序建立连接的请求,并在连接建立后向客户端发送信息。 /* * 功能:这是服务器端程序,用来监听客户端应用程序建立连接的请求,并在 连接建立后向客户端发送信息 */ package com.xushouwei; /引入相应的包 import .*; import java.io.*; public class TServer public static void main(String args) /定义ServerSocket 类 ServerSocket s=null; /定义Socket类 Socket s1; /定义发送字符串 String sendString=“你好!我是徐守威 .“; /得到发送字符串的长度 int s1lenth=sendString.length(); /定义OutputStream 类 OutputStream s1out; /定义DataOutputStream类 DataOutputStream dos; /通过1314端口建立连接 try /创建ServerSocket 并把传入端口号 s=new ServerSocket(1314); catch (Exception e) e.printStackTrace(); /循环运行监听程序,以监视连接请求 while(true) try /监听端口请求,等待连接 s1=s.accept(); /得到与 socket相连接的数据流对象 s1out=s1.getOutputStream(); dos=new DataOutputStream(s1out); /发送字符串 dos.writeUTF(sendString); /关闭数据流(但不是关闭 Socket连接) dos.close(); s1out.close(); s1.close(); catch (Exception e) e.printStackTrace(); 2.客户端程序 TCP/IP 服务器端应用程序是通过 Java 语言中提供的 Socket 类来实现的。同样,Socket 类 提供了包括建立网络连接在内的许多功能,它的构造方法有以下几种: Socket(InetAddress address,int port) Socket(InetAddress address,int port,Boolean stream) Socket(String host,int port) Socket(String host,int port, InetAddress localAddr,int localPort) 其中,address 、 host 和 port 分别指连接另一方的 IP 地址、主机名称和端口号, stream 这表 示该 Socket 是否是支持流的 Socket,localAddr 和 localPort 是本机的地址和端口号。下面程 序用来与前面的服务器端程序建立连接,并将服务器端送来的信息显示在标准输出上。 /* * 功能:这是客户端程序,用来与前面的服务器端程序建立连接,并将服务器 端送来的信息显示在标准输出上 */ package com.xushouwei; /引入相应的包 import .*; import java.io.*; public class TClint public static void main(String args) /定义Socket类 Socket s1; /定义InputStream 类 InputStream s1In; /定义DataInputStream类 DataInputStream dis; try
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏省退役军人事务厅直属优抚医院招聘12人考前自测高频考点模拟试题附答案详解
- 安全培训教学壁纸课件
- 2025年闭式塔项目合作计划书
- 2025湖南新宁县事业单位和县属国有企业人才引进降低开考比例岗位考前自测高频考点模拟试题及答案详解(易错题)
- 2025福建泉州发展集团有限公司(第一批)人才引进招聘25人模拟试卷及一套完整答案详解
- 客户信息采集及管理工具
- 小区农业设施共享管理协议
- 2025年安徽交控集团所属安徽交控石油有限公司招聘16人模拟试卷及答案详解(名师系列)
- 2025广东韶关市翁源县人民法院招聘劳动合同制书记员1人模拟试卷及答案详解(新)
- 医学研究成果安全保障承诺书(3篇)
- 法律咨询服务质量控制方案
- 村集体经济理事长述职报告范本
- GB 1002-2024家用和类似用途单相插头插座型式、基本参数和尺寸
- DL∕T 515-2018 电站弯管 标准
- DZ∕T 0270-2014 地下水监测井建设规范
- 增强型水泥基泡沫保温隔声板建筑地面工程应用技术标准
- 2024年河北石家庄市轨道交通集团有限责任公司招聘笔试参考题库含答案解析
- 虚拟现实技术在物流管理中的应用
- 分段函数公开课课件
- 初中九年级语文课件-《行路难》其一
- 志愿者安全培训课件
评论
0/150
提交评论