Java网络编程-代理
来源:互联网 发布:windows为什么要激活 编辑:程序博客网 时间:2024/06/07 17:38
1.网络编程简述
基于 TCP/IP 4层网络模型:物理层、网络层、传输层、应用层
纯Java只能工作在网络层以上,即只能在传输层和应用层直接编程
所以使用Java抓包,比如监听网卡都需要借助第三方工具比如 winpcap来做,不是特别方便
但正应为java工作在网络层以上,并且提供面向TCP的Socket编程
Java 帮我们封装了包分片、丢失重传、分片组装、校验等等一系列低层工作
所以才会觉得Java网络编程上手是如此简单,言归正常,来说代理
(1)传输层常用的协议就是TCP+UDP
(2)应用层是我们说的高层,常用的协议有 HTTP、FTP、SMTP、POP 等
使用Java发起网络连接,如果要使用代理,该如何使用呢
2. 网络代理
package com.yli.socket;import java.io.IOException;import java.net.InetSocketAddress;import java.net.MalformedURLException;import java.net.Proxy;import java.net.Socket;import java.net.SocketAddress;import java.net.URL;public class ProxyTest {public static void main(String[] args) {// 3种形式的代理// 1.工作于高层:即应用层的代理,比如 http 和 ftpProxy.Type type_http = Proxy.Type.HTTP;// 2.工作在低层:即传输层的代理 SOCKSProxy.Type type_socks = Proxy.Type.SOCKS;// 3.直连网络 即不通过代理// Proxy.Type type_none = Proxy.Type.DIRECT;try {// 如何设置代理,有2种方法:以下分别演示// ************************ 全局代理 *****************************//// 1.1 设置http全局代理 :同一个JVM里面的连接都默认使用该代理System.setProperty("http.proxyHost", "192.168.157.1");System.setProperty("http.proxyPort", "80");// 如果哪些连接不通过代理,可通过 http.nonProxyHosts设置System.setProperty("http.nonProxyHosts", "oa.xx.com|*.soa.com");// 1.2 设置socks全局代理:注意这种方式就是要么全部使用代理,要么全部使用// 不像 http 代理还可以设置 nonProxyHostsSystem.setProperty("socks.proxyHost", "192.168.157.1");System.setProperty("socks.proxyPort", "80");// ************************ 连接前指定代理 *****************************//// 2.1 应用层编程(比如http/ftp等)使用代理: 比如通过代理连接到百度SocketAddress sa = new InetSocketAddress("192.168.157.1", 80);Proxy http_proxy = new Proxy(type_http, sa);URL url = new URL("http://www.baidu.com");url.openConnection(http_proxy);// 2.2 直接在低层即传输层使用Socket编程,在连接前使用代理Proxy socks_proxy = new Proxy(type_socks, sa);Socket client = new Socket(socks_proxy);SocketAddress remote = new InetSocketAddress("baidu.com", 80);client.connect(remote, 3000);client.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
上述代码详细介绍了代理的几种形式,以及如何使用代理发起连接
当然很多情况下,通过代理连接是需要提供口令即账号密码的,这个也不难
下一篇介绍
0 0
- Java网络编程-代理
- Java网络编程-代理2
- Java网络编程HTTP代理的使用
- 读书笔记-java网络编程-5URL和URI-代理
- java 设置代理网络
- 【网络编程】JAVA网络编程
- java使用代理访问网络
- java使用代理访问网络
- java使用代理访问网络
- java使用代理访问网络
- java使用代理访问网络
- java中设置网络代理
- Java通过网络代理访问网络
- anroid下网络编程及代理使用
- 网络编程时使用代理的原因
- iOS网络编程:五、Post代理异步
- 《JAVA编程思想》中的代理
- Java编程之动态代理
- 迷你浏览器——WebView学习
- jquery去除回车换行
- HDOJ 题目3456 Universal Oracle(模拟,水)
- 论文中的图目录与表目录
- nagios插件之监控单个tomcat线程数
- Java网络编程-代理
- 程序存储问题
- 大数相加
- THREE.js -- 沿物体表面放置对象
- Clouder CDH Hadoop安装
- HashMap练习题
- 转瞬年华,新的开始
- 算法导论 计数排序
- 《数据结构课程设计》3号题