标签:
以下代码实现了使用DatagramSocket发送和接受数据:
import java.net.*; import java.io.*; public class UdpServer { public static final int PORT = 30000; // 定义每个数据报的最大大小为4K private static final int DATA_LEN = 4096; // 定义接收网络数据的字节数组 byte[] inBuff = new byte[DATA_LEN]; // 以指定字节数组创建准备接受数据的DatagramPacket对象 private DatagramPacket inPacket = new DatagramPacket(inBuff, inBuff.length); // 定义一个用于发送的DatagramPacket对象 private DatagramPacket outPacket; // 定义一个字符串数组,服务器发送该数组的的元素 String[] books = new String[] { "LinkinPark", "NightWish", "林肯公园", "夜愿。。。" }; public void init() throws IOException { // 创建DatagramSocket对象 DatagramSocket socket = null; try { socket = new DatagramSocket(PORT); // 采用循环接受数据 for (int i = 0; i < 1000; i++) { // 读取Socket中的数据,读到的数据放入inPacket封装的数组里。 socket.receive(inPacket); // 判断inPacket.getData()和inBuff是否是同一个数组 System.out.println(inBuff == inPacket.getData()); // 将接收到的内容转成字符串后输出 System.out.println(new String(inBuff, 0, inPacket.getLength())); // 从字符串数组中取出一个元素作为发送的数据 byte[] sendData = books[i % 4].getBytes(); // 以指定字节数组作为发送数据、以刚接受到的DatagramPacket的 // 源SocketAddress作为目标SocketAddress创建DatagramPacket。 outPacket = new DatagramPacket(sendData, sendData.length, inPacket.getSocketAddress()); // 发送数据 socket.send(outPacket); } } finally { if (socket != null) { socket.close(); } } } public static void main(String[] args) throws IOException { new UdpServer().init(); } }
import java.net.*; import java.io.*; import java.util.*; public class UdpClient { // 定义发送数据报的目的地 public static final int DEST_PORT = 30000; public static final String DEST_IP = "127.0.0.1"; // 定义每个数据报的最大大小为4K private static final int DATA_LEN = 4096; // 定义接收网络数据的字节数组 byte[] inBuff = new byte[DATA_LEN]; // 以指定字节数组创建准备接受数据的DatagramPacket对象 private DatagramPacket inPacket = new DatagramPacket(inBuff, inBuff.length); // 定义一个用于发送的DatagramPacket对象 private DatagramPacket outPacket = null; public void init() throws IOException { // 创建一个客户端DatagramSocket,使用随机端口 DatagramSocket socket = null; try { socket = new DatagramSocket(); // 初始化发送用的DatagramSocket,它包含一个长度为0的字节数组 outPacket = new DatagramPacket(new byte[0], 0, InetAddress.getByName(DEST_IP), DEST_PORT); // 创建键盘输入流 Scanner scan = new Scanner(System.in); // 不断读取键盘输入 while (scan.hasNextLine()) { // 将键盘输入的一行字符串转换字节数组 byte[] buff = scan.nextLine().getBytes(); // 设置发送用的DatagramPacket里的字节数据 outPacket.setData(buff); // 发送数据报 socket.send(outPacket); // 读取Socket中的数据,读到的数据放在inPacket所封装的字节数组里。 socket.receive(inPacket); System.out.println(new String(inBuff, 0, inPacket.getLength())); } } finally { if (socket != null) { socket.close(); } } } public static void main(String[] args) throws IOException { new UdpClient().init(); } }
import java.io.*; import java.net.*; import java.util.*; /** * * @version 1L * @author LinkinPark * @since 2015-2-11 * @motto 梦似烟花心似水,同学少年不言情 * @desc ^以URLConnection为例介绍如何在URLConnection中使用代理服务器 */ public class ProxyTest { // 下面是代理服务器的地址和端口, // 换成实际有效的代理服务器的地址和端口 final String PROXY_ADDR = "129.82.12.188"; final int PROXY_PORT = 3124; // 定义需要访问的网站地址 String urlStr = "http://www.crazyit.org"; public void init() throws IOException , MalformedURLException { URL url = new URL(urlStr); // 创建一个代理服务器对象 Proxy proxy = new Proxy(Proxy.Type.HTTP , new InetSocketAddress(PROXY_ADDR , PROXY_PORT)); // 使用指定的代理服务器打开连接 URLConnection conn = url.openConnection(proxy); // 设置超时时长。 conn.setConnectTimeout(5000); try( // 通过代理服务器读取数据的Scanner Scanner scan = new Scanner(conn.getInputStream(), "utf-8"); PrintStream ps = new PrintStream("index.htm")) { while (scan.hasNextLine()) { String line = scan.nextLine(); // 在控制台输出网页资源内容 System.out.println(line); // 将网页资源内容输出到指定输出流 ps.println(line); } } } public static void main(String[] args) throws IOException, MalformedURLException { new ProxyTest().init(); } }
import java.io.*; import java.net.*; import java.util.*; /** * * @version 1L * @author LinkinPark * @since 2015-2-11 * @motto 梦似烟花心似水,同学少年不言情 * @desc ^通过改变系统属性来改变默认的代理服务器 */ public class ProxySelectorTest { // 下面是代理服务器的地址和端口, // 随便一个代理服务器的地址和端口 final String PROXY_ADDR = "139.82.12.188"; final int PROXY_PORT = 3124; // 定义需要访问的网站地址 String urlStr = "http://www.crazyit.org"; public void init() throws IOException , MalformedURLException { // 注册默认的代理选择器 ProxySelector.setDefault(new ProxySelector() { @Override public void connectFailed(URI uri , SocketAddress sa, IOException ioe) { System.out.println("无法连接到指定代理服务器!"); } // 根据"业务需要"返回特定的对应的代理服务器 @Override public List<Proxy> select(URI uri) { // 本程序总是返回某个固定的代理服务器。 List<Proxy> result = new ArrayList<>(); result.add(new Proxy(Proxy.Type.HTTP , new InetSocketAddress(PROXY_ADDR , PROXY_PORT))); return result; } }); URL url = new URL(urlStr); // 没有指定代理服务器、直接打开连接 URLConnection conn = url.openConnection(); //① // 设置超时时长。 conn.setConnectTimeout(3000); try( // 通过代理服务器读取数据的Scanner Scanner scan = new Scanner(conn.getInputStream()); PrintStream ps = new PrintStream("index.htm")) { while (scan.hasNextLine()) { String line = scan.nextLine(); // 在控制台输出网页资源内容 System.out.println(line); // 将网页资源内容输出到指定输出流 ps.println(line); } } } public static void main(String[] args) throws IOException, MalformedURLException { new ProxySelectorTest().init(); } }
import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class DownLoad { public static void main(String[] args) throws Exception { String str = "http://localhost/project_document.zip"; URL url = new URL(str);//上句指定下载的地址和文件 URLConnection urlConn = url.openConnection(); urlConn.connect();//获得连接然后在获得输入流 InputStream is = urlConn.getInputStream(); FileOutputStream fos = new FileOutputStream("/home/sd0807/down.zip"); byte[] buf = new byte[4096]; //上句指定下载的地址和下载后的名称 int length = 0; while ((length = is.read(buf)) != -1) { fos.write(buf, 0, length); } fos.close(); is.close(); } }
标签:
原文地址:http://blog.csdn.net/u011794238/article/details/43735825