JAVA套接字(Socket)三 套接字初体验
一个秘密的套接字
1. 介绍
Java 平台在 java.net 包中提供套接字的实现。在本教程中,我们将与 java.net 中的以下三个类一起工作:
URLConnection
Socket
ServerSocket
java.net 中还有更多的类,但这些是您将最经常碰到的。让我们从 URLConnection 开始。这个类为您不必了解任何底层套接字细节就能在 Java 代码中使用套接字提供一种途径。
2. 甚至不用尝试就可使用套接字
URLConnection 类是所有在应用程序和 URL 之间创建通信链路的类的抽象超类。URLConnection 在获取 Web 服务器上的文档方面特别有用,但也可用于连接由 URL 标识的任何资源。该类的实例既可用于从资源中读,也可用于往资源中写。例如,您可以连接到一个 servlet 并发送一个格式良好的 XML String 到服务器上进行处理。URLConnection 的具体子类(例如 HttpURLConnection)提供特定于它们实现的额外功能。对于我们的示例,我们不想做任何特别的事情,所以我们将使用 URLConnection 本身提供的缺省行为。
连接到 URL 包括几个步骤:
创建 URLConnection
用各种 setter 方法配置它
连接到 URL
用各种 getter 方法与它交互
接着,我们将看一些演示如何用 URLConnection 来从服务器请求文档的样本代码
3. URLClient 类
我们将从 URLClient 类的结构讲起。
import java.io.*;import java.net.*;public class URLClient { protected URLConnection connection; public static void main(String[] args) { } public String getDocumentAt(String urlString) { }}public static void main(String[] args) { URLClient client = new URLClient(); String yahoo = client.getDocumentAt("http://www.yahoo.com"); System.out.println(yahoo);}public String getDocumentAt(String urlString) { StringBuffer document = new StringBuffer(); try { URL url = new URL(urlString); URLConnection conn = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while ((line = reader.readLine()) != null) document.append(line + "\n"); reader.close(); } catch (MalformedURLException e) { System.out.println("Unable to connect to URL: " + urlString); } catch (IOException e) { System.out.println("IOException when connecting to URL: " + urlString); } return document.toString();}URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;while ((line = reader.readLine()) != null) document.append(line + "\n");
reader.close();
import java.io.*;import java.net.*;public class URLClient { protected HttpURLConnection connection; public String getDocumentAt(String urlString) { StringBuffer document = new StringBuffer(); try { URL url = new URL(urlString); URLConnection conn = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while ((line = reader.readLine()) != null) document.append(line + "\n"); reader.close(); } catch (MalformedURLException e) { System.out.println("Unable to connect to URL: " + urlString); } catch (IOException e) { System.out.println("IOException when connecting to URL: " + urlString); } return document.toString(); } public static void main(String[] args) { URLClient client = new URLClient(); String yahoo = client.getDocumentAt("http://www.yahoo.com"); System.out.println(yahoo); }}