Java语言Socket接口用法详解.doc_第1页
Java语言Socket接口用法详解.doc_第2页
Java语言Socket接口用法详解.doc_第3页
Java语言Socket接口用法详解.doc_第4页
Java语言Socket接口用法详解.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

Socket接口用法详解在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Server,并通过accept()方法随时监听客户端的连接请求。扩展:ServerSocket中常用的构造函数及方法构造函数:ServerSocket(int port) 这是一个构造方法,用于在当前的服务器默认的IP地址上监听一个指定的端口,即在指定的IP和端口创建一个ServerSocket对象方法:Socket accept() 产生阻塞,监听指定的端口,直至有客户端发来连接请求void close() 关闭当前ServerSocketInetAddress 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论