网络编程(URL-URLConnection)
1.类URL(java.net包)
1)类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,
也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
通常,URL 可分成几个部分。上面的 URL 示例指示使用的协议为 http (超文本传输协议)
主机上此名称的准确含义取决于协议和主机。该信息一般存储在文件中,
但可以随时生成。该 URL 的这一部分称为路径 部分。
URL 可选择指定一个“端口”,它是用于建立到远程主机 TCP 连接的端口号。如果未指定该端口号,
则使用协议默认的端口。例如,http 协议的默认端口为 80
2)构造方法摘要
URL(String spec)
根据 String 表示形式创建 URL 对象。
URL(String protocol, String host, int port, String file)
根据指定 protocol、host、port 号和 file 创建 URL 对象。
URL(String protocol, String host, int port, String file, URLStreamHandler handler)
根据指定的 protocol、host、port 号、file 和 handler 创建 URL 对象。
URL(String protocol, String host, String file)
根据指定的 protocol 名称、host 名称和 file 名称创建 URL。
3)方法摘要
int getDefaultPort()
获取与此 URL 关联协议的默认端口号。
String getFile()
获取此 URL 的文件名。
String getHost()
获取此 URL 的主机名(如果适用)。
String getPath()
获取此 URL 的路径部分。
int getPort()
获取此 URL 的端口号。
String getProtocol()
获取此 URL 的协议名称。
String getQuery()
获取此 URL 的查询部分。
URLConnection openConnection()
返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
InputStream openStream()
打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
注:
openStream():
public final InputStream openStream()
throws IOException
打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。此方法是下面方法的缩写:
openConnection().getInputStream()
import java.net.*;
class URLDemo
{
public static void main(String[] args) throws MalformedURLException
{
URL url = new URL("http://192.168.1.254/myweb/demo.html?name=haha&age=30");
System.out.println("getProtocol() :"+url.getProtocol());
System.out.println("getHost() :"+url.getHost());
System.out.println("getPort() :"+url.getPort());
System.out.println("getPath() :"+url.getPath());
System.out.println("getFile() :"+url.getFile());
System.out.println("getQuery() :"+url.getQuery());
/*int port = getPort();
if(port==-1)
port = 80;
getPort()==-1
*/
}
}
2.类 URLConnection(java.net包)
直接已知子类:
HttpURLConnection, JarURLConnection
1)抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。
此类的实例可用于读取和写入此 URL 引用的资源。通常,创建一个到 URL 的连接需要几个步骤:
<1>通过在 URL 上调用 openConnection 方法创建连接对象。
<2>处理设置参数和一般请求属性。
<3>使用 connect 方法建立到远程对象的实际连接。
<4>远程对象变为可用。远程对象的头字段和内容变为可访问。
使用以下方法修改设置参数:
setAllowUserInteraction
setDoInput
setDoOutput
setIfModifiedSince
setUseCaches
使用以下方法修改一般请求属性:
setRequestProperty
使用 setDefaultAllowUserInteraction 和 setDefaultUseCaches 可设置 AllowUserInteraction 和 UseCaches 参数的默认值。
上面每个 set 方法都有一个用于获取参数值或一般请求属性值的对应 get 方法。适用的具体参数和一般请求属性取决于协议。
在建立到远程对象的连接后,以下方法用于访问头字段和内容:
getContent
getHeaderField
getInputStream
getOutputStream
某些头字段需要经常访问。以下方法:
getContentEncoding
getContentLength
getContentType
getDate
getExpiration
getLastModifed
提供对这些字段的便捷访问。getContent 方法使用 getContentType 方法以确定远程对象类型;子类重写 getContentType 方法很容易。
一般情况下,所有的预连接参数和一般请求属性都可忽略:预连接参数和一般请求属性默认为敏感值。对于此接口的大多数客户端而言,只有两个需要的方法:getInputStream 和 getContent,它们通过便捷方法镜像到 URL 类中。
2)构造方法摘要
protected URLConnection(URL url)
构造一个到指定 URL 的 URL 连接。
3)方法摘要
void addRequestProperty(String key, String value)
添加由键值对指定的一般请求属性。
abstract void connect()
打开到此 URL 引用的资源的通信链接(如果尚未建立这样的连接)。
long getIfModifiedSince()
返回此对象的 ifModifiedSince 字段的值。
InputStream getInputStream()
返回从此打开的连接读取的输入流。
long getLastModified()
返回 last-modified 头字段的值。
OutputStream getOutputStream()
返回写入到此连接的输出流。
Object getContent()
获取此 URL 连接的内容。
int getContentLength()
返回 content-length 头字段的值。
String getContentType()
返回 content-type 头字段的值。
long getDate()
返回 date 头字段的值。
4.注意:
1)URLConnection 类可以拆包(使用应用层的协议对数据进行拆包)解析服务端发送过来的头字段数据,而只读取正文主体。
不再显示响应头。它封装了http协议和Socket对象,故该数据处理发生在应用层。
2)异常:
未报告的异常 java.net.MalformedURLException;必须对其进行捕捉或
声明以便抛出
URL url = new URL("http://192.168.0.2:8080/html/xuyuan.html?name
=haha&age=25");
import java.net.*;
import java.io.*;
class URLConnectionDemo
{
public static void main(String[] args) throws Exception
{
URL url = new URL("http://192.168.1.254:8080/myweb/demo.html");
URLConnection conn = url.openConnection();
System.out.println(conn);
InputStream in = conn.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
}
}
网络编程
1.Socket中:
1)构造方法摘要
Socket()
通过系统默认类型的 SocketImpl 创建未连接套接字
2)需要方法:
void connect(SocketAddress endpoint)
将此套接字连接到服务器。
2.类 SocketAddress(java.net)
此类表示不带任何协议附件的 Socket Address。作为一个抽象类,应通过特定的、协议相关的实现为其创建子类。
它提供不可变对象,供套接字用于绑定、连接或用作返回值。
3.SocketAddress(java.net)------>InetSocketAddress类
1)此类实现 IP 套接字地址(IP 地址 + 端口号)。它还可以是一个对(主机名 + 端口号),在此情况下,
将尝试解析主机名。如果解析失败,则该地址将被视为未解析 地址,但是其在某些情形下仍然可以使用,
比如通过代理连接。
它提供不可变对象,供套接字用于绑定、连接或用作返回值。
通配符 是一个特殊的本地 IP 地址。它通常表示“任何”,只能用于 bind *** 作。
2)构造方法摘要
InetSocketAddress(InetAddress addr, int port)
根据 IP 地址和端口号创建套接字地址。
4.ServerSocket中:
构造方法摘要
ServerSocket(int port, int backlog)
利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。
参数:
port - 指定的端口;或者为 0,表示使用任何空闲端口。
backlog - 队列的最大长度。即主机可同时被访问的最多人数。
07-网络编程(域名解析)
1. 当访问主机时,先找的是本地(即C盘的ip映射文件),本地没有再到外面去找。
在本地找到的话,本地就把地址给浏览器。
2.配置映射关系的好处:
1)将要访问的网站配置到hosts文件,则可极大地提高访问速度。因为减少了访问解析的路程。
如:
#127.0.0.1 www.163.com
2)有些收费软件使用时,会自动到网站更新,从而会影响使用,将更新网站的主机名在hosts文件中进行配置。
则网站就不会再更新了,因为它走的是本地地址,所以更新失败。如:#127.0.0.1 www.myeclipse.com(更新网站举例)l
3)将恶意网站在hosts文件中进行配置,则会屏蔽恶意网站。
3.本地连接--->属性---->Internet协议(TCP/IP)--->双击后可配置DNS
电信通讯默认的是电信的解析服务器
ip与主机名的映射关系地址:C:\WINDOWS\system32\drivers\etc
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)