精华内容
下载资源
问答
  • JAVA实现socket5代理

    2016-05-02 23:41:41
    package test; import java.io.IOException; import java.io.InputStream; ...import java.io.OutputStream;...import java.net.InetSocketAddress;...import java.net.ServerSocket;...import java.net.Socket; ...
    
    package test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.InetSocketAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Arrays;
    
    
    public class SocketProxy {
    	
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) throws Exception {
    		ServerSocket serverSocket = new ServerSocket(8080);
    		while (true) {
    			Socket socket = null;
    			try {
    				socket = serverSocket.accept();
    				new SocketThread(socket).start();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    }
    
    class SocketThread extends Thread {
    	private Socket socketIn;
    	private InputStream isIn;
    	private OutputStream osIn;
    	//
    	private Socket socketOut;
    	private InputStream isOut;
    	private OutputStream osOut;
    
    	public SocketThread(Socket socket) {
    		this.socketIn = socket;
    	}
    
    	private byte[] buffer = new byte[4096];
    //	private static final byte[] VER = { 0x5, 0x0 };
    //	private static final byte[] CONNECT_OK = { 0x5, 0x0, 0x0, 0x1, 0, 0, 0, 0, 0, 0 };
    	private static final byte[] VER = { 5, 0};
    	private static final byte[] CONNECT_OK = { 5, 0, 0, 1, 0, 0, 0, 0, 0, 0 };
    	
    	static{
    		System.out.println(Arrays.toString(VER));
    		System.out.println(Arrays.toString(CONNECT_OK));
    	}
    
    	public void run() {
    		try {
    			System.out.println("\n\na client connect " + socketIn.getInetAddress() + ":" + socketIn.getPort());
    			isIn = socketIn.getInputStream();
    			osIn = socketIn.getOutputStream();
    			int len = isIn.read(buffer);
    			System.out.println("< " + bytesToHexString(buffer, 0, len));
    			osIn.write(VER);
    			osIn.flush();
    			System.out.println("> " + bytesToHexString(VER, 0, VER.length));
    			len = isIn.read(buffer);
    			System.out.println("< " + bytesToHexString(buffer, 0, len));
    			// 查找主机和端口
    			String host = findHost(buffer, 4, 7);
    			int port = findPort(buffer, 8, 9);
    			System.out.println("host=" + host + ",port=" + port);
    			socketOut = new Socket(host, port);
    			isOut = socketOut.getInputStream();
    			osOut = socketOut.getOutputStream();
    			//
    			for (int i = 4; i <= 9; i++) {
    				CONNECT_OK[i] = buffer[i];
    			}
    			osIn.write(CONNECT_OK);
    			osIn.flush();
    			System.out.println("> " + bytesToHexString(CONNECT_OK, 0, CONNECT_OK.length));
    			SocketThreadOutput out = new SocketThreadOutput(isIn, osOut);
    			out.start();
    			SocketThreadInput in = new SocketThreadInput(isOut, osIn);
    			in.start();
    			out.join();
    			in.join();
    		} catch (Exception e) {
    			System.out.println("a client leave");
    		} finally {
    			try {
    				if (socketIn != null) {
    					socketIn.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		System.out.println("socket close");
    	}
    
    	public static String findHost(byte[] bArray, int begin, int end) {
    		StringBuffer sb = new StringBuffer();
    		for (int i = begin; i <= end; i++) {
    			sb.append(Integer.toString(0xFF & bArray[i]));
    			sb.append(".");
    		}
    		sb.deleteCharAt(sb.length() - 1);
    		return sb.toString();
    	}
    
    	public static int findPort(byte[] bArray, int begin, int end) {
    		int port = 0;
    		for (int i = begin; i <= end; i++) {
    			port <<= 16;
    			port += bArray[i];
    		}
    		return port;
    	}
    
    	// 4A 7D EB 69
    	// 74 125 235 105
    	public static final String bytesToHexString(byte[] bArray, int begin, int end) {
    		StringBuffer sb = new StringBuffer(bArray.length);
    		String sTemp;
    		for (int i = begin; i < end; i++) {
    			sTemp = Integer.toHexString(0xFF & bArray[i]);
    			if (sTemp.length() < 2)
    				sb.append(0);
    			sb.append(sTemp.toUpperCase());
    			sb.append(" ");
    		}
    		return sb.toString();
    	}
    }
    
    
    class SocketThreadInput extends Thread {
    	private InputStream isOut;
    	private OutputStream osIn;
    
    	public SocketThreadInput(InputStream isOut, OutputStream osIn) {
    		this.isOut = isOut;
    		this.osIn = osIn;
    	}
    
    	private byte[] buffer = new byte[409600];
    
    	public void run() {
    		try {
    			int len;
    			while ((len = isOut.read(buffer)) != -1) {
    				if (len > 0) {
    					System.out.println(new String(buffer, 0, len));
    					osIn.write(buffer, 0, len);
    					osIn.flush();
    				}
    			}
    		} catch (Exception e) {
    			System.out.println("SocketThreadInput leave");
    		}
    	}
    }
    
    
    class SocketThreadOutput extends Thread {
    	private InputStream isIn;
    	private OutputStream osOut;
    
    	public SocketThreadOutput(InputStream isIn, OutputStream osOut) {
    		this.isIn = isIn;
    		this.osOut = osOut;
    	}
    
    	private byte[] buffer = new byte[409600];
    
    	public void run() {
    		try {
    			int len;
    			while ((len = isIn.read(buffer)) != -1) {
    				if (len > 0) {
    //					System.out.println(new String(buffer, 0, len));
    					osOut.write(buffer, 0, len);
    					osOut.flush();
    				}
    			}
    		} catch (Exception e) {
    			System.out.println("SocketThreadOutput leave");
    		}
    	}
    }
    

     /*

    代码是摘取别人的,我测试了一下火狐可以用
    但是 findHost 方法获取端口有问题,80端口没有问题
    如果是:9999,8978 ....等等会有问题
    socket发送过来的是 长度为10的byte数组
    IP: byte[4-8]字节转字符串用 . 分割就可以了  xx.xx.xx.xx 
    端口不知道是怎么转换的例如9999,字节数组byte[9-10] 就是 39,15
    端口问题尝试看看一下连接
    http://ethen.iteye.com/blog/783338
    原文连接:
    http://www.open-open.com/lib/view/open1344004339456.html
    */

     

    展开全文
  • Java实现Socket5代理服务器

    千次阅读 2019-01-24 17:13:43
    Java实现Socket5代理服务器
                   

    直接贴代码,不解释

    1 主服务,用来侦听端口

    package org.javaren.proxy;import java.net.ServerSocket;import java.net.Socket;public class SocketProxy /**  * @param args  */ public static void main(String[] args) throws Exception {  ServerSocket serverSocket = new ServerSocket(8888);  while (true) {   Socket socket = null;   try {    socket = serverSocket.accept();    new SocketThread(socket).start();   } catch (Exception e) {    e.printStackTrace();   }  } }}

    2 核心代码,处理链接的代理线程

    内部设计了Socket的认证,自己看吧

    package org.javaren.proxy;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class SocketThread extends Thread private Socket socketIn; private InputStream isIn; private OutputStream osIn; // private Socket socketOut; private InputStream isOut; private OutputStream osOut; public SocketThread(Socket socket) {  this.socketIn = socket; } private byte[] buffer = new byte[4096]; private static final byte[] VER = { 0x5, 0x0 }; private static final byte[] CONNECT_OK = { 0x5, 0x0, 0x0, 0x1, 0, 0, 0, 0, 0, 0 }; public void run() {  try {   System.out.println("\n\na client connect " + socketIn.getInetAddress() + ":" + socketIn.getPort());   isIn = socketIn.getInputStream();   osIn = socketIn.getOutputStream();   int len = isIn.read(buffer);   System.out.println("< " + bytesToHexString(buffer, 0, len));   osIn.write(VER);   osIn.flush();   System.out.println("> " + bytesToHexString(VER, 0, VER.length));   len = isIn.read(buffer);   System.out.println("< " + bytesToHexString(buffer, 0, len));   // 查找主机和端口   String host = findHost(buffer, 4, 7);   int port = findPort(buffer, 8, 9);   System.out.println("host=" + host + ",port=" + port);   socketOut = new Socket(host, port);   isOut = socketOut.getInputStream();   osOut = socketOut.getOutputStream();   //   for (int i = 4; i <= 9; i++) {    CONNECT_OK[i] = buffer[i];   }   osIn.write(CONNECT_OK);   osIn.flush();   System.out.println("> " + bytesToHexString(CONNECT_OK, 0, CONNECT_OK.length));   SocketThreadOutput out = new SocketThreadOutput(isIn, osOut);   out.start();   SocketThreadInput in = new SocketThreadInput(isOut, osIn);   in.start();   out.join();   in.join();  } catch (Exception e) {   System.out.println("a client leave");  } finally {   try {    if (socketIn != null) {     socketIn.close();    }   } catch (IOException e) {    e.printStackTrace();   }  }  System.out.println("socket close"); } public static String findHost(byte[] bArray, int begin, int end) {  StringBuffer sb = new StringBuffer();  for (int i = begin; i <= end; i++) {   sb.append(Integer.toString(0xFF & bArray[i]));   sb.append(".");  }  sb.deleteCharAt(sb.length() - 1);  return sb.toString(); } public static int findPort(byte[] bArray, int begin, int end) {  int port = 0;  for (int i = begin; i <= end; i++) {   port <<= 16;   port += bArray[i];  }  return port; } // 4A 7D EB 69 // 74 125 235 105 public static final String bytesToHexString(byte[] bArray, int begin, int end) {  StringBuffer sb = new StringBuffer(bArray.length);  String sTemp;  for (int i = begin; i < end; i++) {   sTemp = Integer.toHexString(0xFF & bArray[i]);   if (sTemp.length() < 2)    sb.append(0);   sb.append(sTemp.toUpperCase());   sb.append(" ");  }  return sb.toString(); }}


    3  读取线程,负责外面读数据,写入到请求端

    package org.javaren.proxy;/** * * 从外部读取,向内部发送信息 */import java.io.InputStream;import java.io.OutputStream;public class SocketThreadInput extends Thread private InputStream isOut; private OutputStream osIn; public SocketThreadInput(InputStream isOut, OutputStream osIn) {  this.isOut = isOut;  this.osIn = osIn; } private byte[] buffer = new byte[409600]; public void run() {  try {   int len;   while ((len = isOut.read(buffer)) != -1) {    if (len > 0) {     System.out.println(new String(buffer, 0, len));     osIn.write(buffer, 0, len);     osIn.flush();    }   }  } catch (Exception e) {   System.out.println("SocketThreadInput leave");  } }}

    4 写入线程,负责读取请求端数据,写入到目标端

    package org.javaren.proxy;import java.io.InputStream;import java.io.OutputStream;/** * 从内部读取,向外部发送信息 *  * @author zxq *  */public class SocketThreadOutput extends Thread private InputStream isIn; private OutputStream osOut; public SocketThreadOutput(InputStream isIn, OutputStream osOut) {  this.isIn = isIn;  this.osOut = osOut; } private byte[] buffer = new byte[409600]; public void run() {  try {   int len;   while ((len = isIn.read(buffer)) != -1) {    if (len > 0) {     System.out.println(new String(buffer, 0, len));     osOut.write(buffer, 0, len);     osOut.flush();    }   }  } catch (Exception e) {   System.out.println("SocketThreadOutput leave");  } }}


    效果还不错,用firefox/ ie都测试过,可用。


               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 代码如下: import java.io.*; import java.net.InetAddress; import java.net.ServerSocket;... import java.net.Socket; import java.nio.ByteBuffer; import java.text.DateFormat; import j...

    代码如下:

        import java.io.*;
        import java.net.InetAddress;
        import java.net.ServerSocket;
        import java.net.Socket;
        import java.nio.ByteBuffer;
        import java.text.DateFormat;
        import java.text.SimpleDateFormat;
        import java.util.Arrays;
        import java.util.Date;
        import java.util.concurrent.CountDownLatch;
    
    /**
     * Created with Intellij IDEA
     *
     * @author: jiaoyiping
     * Mail: jiaoyiping@gmail.com
     * Date: 2018/03/01
     * Time: 22:08
     * To change this template use File | Settings | Editor | File and Code Templates
     */
    
    public class MySocket5Server implements Runnable {
    private static final int SOCKS_PROTOCOL_4 = 0X04;
    private static final int SOCKS_PROTOCOL_5 = 0X05;
    private static final int DEFAULT_BUFFER_SIZE = 1024;
    private static final byte TYPE_IPV4 = 0x01;
    private static final byte TYPE_IPV6 = 0X02;
    private static final byte TYPE_HOST = 0X03;
    private static final byte ALLOW_PROXY = 0X5A;
    private static final byte DENY_PROXY = 0X5B;
    private Socket sourceSocket;
    
    @Override
    public void run() {
        String remoteAddress = sourceSocket.getRemoteSocketAddress().toString();
        log("process socket:" + remoteAddress);
        InputStream sourceIn = null, proxyIn = null;
        OutputStream sourceOut = null, proxyOut = null;
    
        Socket proxySocket = null;
        try {
            sourceIn = sourceSocket.getInputStream();
            sourceOut = sourceSocket.getOutputStream();
            //从协议头中获取socket的类型
            byte[] tmp = new byte[1];
            int n = sourceIn.read(tmp);
            if (n == 1) {
                int protocol = tmp[0];
                //socket4
                if (SOCKS_PROTOCOL_4 == protocol) {
                    proxySocket = convertToSocket4(sourceIn, sourceOut);
    
                } else if (SOCKS_PROTOCOL_5 == protocol) {
                    proxySocket = convertToSocket5(sourceIn, sourceOut);
                } else {
                    log("Socket协议错误,不是Socket4或者Socket5");
                }
                //socket转换
                if (null != proxySocket) {
                    CountDownLatch countDownLatch = new CountDownLatch(1);
                    proxyIn = proxySocket.getInputStream();
                    proxyOut = proxySocket.getOutputStream();
                    transfer(sourceIn, proxyOut, countDownLatch);
                    transfer(proxyIn, sourceOut, countDownLatch);
                    try {
                        countDownLatch.await();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                }
    
            } else {
                log("SOCKET ERROR: " + tmp.toString());
            }
    
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            closeIO(sourceIn);
            closeIO(proxyIn);
            closeIO(proxyOut);
            closeIO(proxyIn);
            closeIO(proxySocket);
            closeIO(sourceSocket);
        }
    
    
    }
    
    public MySocket5Server(Socket sourceSocket) {
        this.sourceSocket = sourceSocket;
    }
    
    private static final void log(String message) {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(dateFormat.format(new Date()) + " - " + message);
    }
    
    private static void startServer(int port) {
        log("config =>> port=" + port);
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            Socket socket = null;
            while ((socket = serverSocket.accept()) != null) {
                new Thread(new MySocket5Server(socket)).start();
            }
            log("close socket(this never happen)");
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    
    }
    
    private Socket convertToSocket4(InputStream inputStream, OutputStream outputStream) throws IOException {
        Socket proxySocket = null;
        byte[] tmp = new byte[3];
        inputStream.read(tmp);
        // 请求协议|VN1|CD1|DSTPORT2|DSTIP4|NULL1|
        int port = ByteBuffer.wrap(tmp, 1, 2).asShortBuffer().get() & 0xFFFF;
        String host = getHost((byte) 0x01, inputStream);
        inputStream.read();
        //返回一个8字节的响应协议: |VN1|CD1|DSTPORT2|DSTIP 4|
        byte[] response = new byte[8];
        try {
            proxySocket = new Socket(host, port);
            response[1] = ALLOW_PROXY;
            log("connect " + tmp[1] + "host: " + host + " ,port: " + port);
        } catch (Exception e) {
            response[1] = DENY_PROXY;
            log("connect error,host: " + host + " ,port: " + port);
        }
        outputStream.write(response);
        outputStream.flush();
    
        return proxySocket;
    }
    
    private Socket convertToSocket5(InputStream inputStream, OutputStream outputStream) throws IOException {
        Socket proxySocket = null;
        //处理SOCKS5头信息(不支持登录)
        byte[] tmp = new byte[2];
        inputStream.read(tmp);
        byte method = tmp[1];
        if (0x02 == tmp[0]) {
            method = 0x00;
            inputStream.read();
        }
        tmp = new byte[]{0x05, method};
        outputStream.write(tmp);
        outputStream.flush();
    
        byte cmd = 0;
        tmp = new byte[4];
        inputStream.read(tmp);
        log("proxy header is:" + Arrays.toString(tmp));
    
        cmd = tmp[1];
        String host = getHost(tmp[3], inputStream);
        tmp = new byte[2];
        inputStream.read(tmp);
        int port = ByteBuffer.wrap(tmp).asShortBuffer().get() & 0xFFFF;
        log("connect host: " + host + " :port:" + port);
        ByteBuffer rsv = ByteBuffer.allocate(10);
        rsv.put((byte) 0x05);
        Object resultTmp = null;
        try {
            if (0x01 == cmd) {
                resultTmp = new Socket(host, port);
                rsv.put((byte) 0x00);
            } else if (0x02 == cmd) {
                resultTmp = new ServerSocket(port);
                rsv.put((byte) 0x00);
            } else {
                rsv.put((byte) 0x05);
                resultTmp = null;
            }
        } catch (Exception e) {
            rsv.put((byte) 0x05);
            resultTmp = null;
        }
        rsv.put((byte) 0x00);
        rsv.put((byte) 0x01);
        rsv.put(sourceSocket.getLocalAddress().getAddress());
        Short localPort = (short) ((sourceSocket.getLocalPort()) & 0xFFFF);
        rsv.putShort(localPort);
        tmp = rsv.array();
    
        outputStream.write(tmp);
        outputStream.flush();
        if (null != resultTmp && 0x02 == cmd) {
            ServerSocket ss = (ServerSocket) resultTmp;
            try {
                resultTmp = ss.accept();
            } catch (Exception e) {
            } finally {
                closeIO(ss);
            }
        }
        return (Socket) resultTmp;
    
    }
    
    private void transfer(InputStream in, OutputStream out, CountDownLatch latch) {
        new Thread(() -> {
            byte[] bytes = new byte[DEFAULT_BUFFER_SIZE];
            int count = 0;
            try {
                while (0 < (count = in.read(bytes))) {
                    out.write(bytes, 0, count);
                    out.flush();
                }
            } catch (IOException e) {
                log("转换出现错误");
                e.printStackTrace();
            }
            if (latch != null) {
                latch.countDown();
            }
    
        }).start();
    
    }
    
    private void closeIO(Closeable closeable) {
        if (closeable != null) {
            try {
                closeable.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    private String getHost(byte type, InputStream inputStream) throws IOException {
        String host = null;
        byte[] tmp = null;
        switch (type) {
            case TYPE_IPV4:
                tmp = new byte[4];
                inputStream.read(tmp);
                host = InetAddress.getByAddress(tmp).getHostAddress();
                break;
            case TYPE_IPV6:
                tmp = new byte[16];
                inputStream.read(tmp);
                host = InetAddress.getByAddress(tmp).getHostAddress();
                break;
            case TYPE_HOST:
                int count = inputStream.read();
                tmp = new byte[count];
                inputStream.read(tmp);
                host = new String(tmp);
            default:
                break;
        }
        return host;
    }
    
    public static void main(String[] args) {
        java.security.Security.setProperty("networkaddress.cache.ttl", "86400");
        MySocket5Server.startServer(1033);
    }
    
    
    }

    转载于:https://www.cnblogs.com/jiaoyiping/p/8511962.html

    展开全文
  • chrome设置socket5代理: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --show-app-list --proxy-server="SOCKS5://127.0.0.1:7090" 查看进程号: netstat -ano |findstr 端口号 ...

    chrome设置socket5代理:

    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --show-app-list  --proxy-server="SOCKS5://127.0.0.1:7090"


    查看进程号:

    netstat -ano |findstr 端口号


    进程号查看程序文件:

    tasklist|findstr 进程号


    根据文件杀死本程序及子程序

    taskkill -f -t -im 文件名



    展开全文
  • 我请教一个问题,我要用java分别通过ftp和telnet链接一个设备,但是都得通过socket5代理才能通,ftp我已经找到一个叫ftp4j的包实现了,但是telnet没有找到,请问有没有这样的第三方包?
  • 一、RPC RPC(Remote Procedure Call)——远程过程调用。两台服务器A、B,一个应用部署在A服务器... 实现RPC步骤:1.客户端生成动态代理类;2.代理类发送请求;3.服务端接受请求;4.服务端处理请求;5.服务器发送...
  • rpc的Java简单实现

    2020-02-24 17:13:50
    使用idea的maven工程创建,分为服务端和客户端,涉及到的技术有以下: 1、socket通信 2、通过注解的方式发布服务。 3、支持多版本的实现。...4、java动态代理5、Spring的启动。 6、线程池的使用
  • RPC使用java最基本的,传输层使用Socket,序列化使用Serializable,java 动态代理模式,但是未实现消息注册等相关信息 大道至简 server端 1 package com.rpc.entity; 2 3 import java.io....
  • java8 源码 java interview 算法数据结构 海量数据如何去重? () () () ...java基础相关 ...底层如何实现?...基于socket的网络编程 () jMM () 注解原理 () () 数据库相关 使用mysql索引都有哪些原则?索引有什
  • Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型 Java网络编程和NIO详解3:IO模型与Java网络编程模型 Java网络编程与NIO详解4:浅析NIO...
  • java常用代码

    2013-07-10 19:15:21
    5.JdbcConn.java java jdbc连接oracle/mysql 6.NioFile.java nio操作文件读写 7.ImageThumbnail.java 生成图片缩略图 8.JsonObjs.java json简单操作 9.HttpProxy.java 代理设置 10.CaptureScreen.java 截取桌面 ...
  • Java网络编程

    2017-05-08 16:04:27
    不仅可以获取网络资源,传递参数到远程服务器,还可以通过Socket对象实现TCP协议,通过DatagramSocket对象实现UDP协议。同时,对于多点广播以及代理服务器也有着非常强大的支持。以下是本人在学习过程中的总结和归纳...
  • java网络编程

    热门讨论 2011-12-19 20:09:37
    它还涵盖了Java对网络代理、Web cookie和URL缓存的支持。 《Java网络编程》不仅仅是对API的解释:它还展示了如何使用API。本书有很多示例,包含了几千行可以实际工作的代码(所有代码都可以在线获得),实现了功能...
  • 实例54 Java实现跨平台的代理服务器及其计费 第4章 图形图像处理应用编程 实例55 Java中实现图像切换特效 实例56 用Java制作广告轮换条 实例57 Visual J++ 60中读取图像的灰度与进行灰度变换 实例58 ...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText();...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的运行机制和JVM 6 1.4 开发Java的准备 7 1.4.1 安装JDK 8 学生提问:不是说JVM是运行Java程序的虚拟机吗?那JRE和JVM的关系是怎样的呢? 8 ...
  • Java典型模块

    2012-02-25 18:27:40
    2.3 Java实现的面向对象特性 2.3.1 定义类 2.3.2 创建对象 2.3.3 实现继承 2.3.4 实现多态 2.3.5 实现封装 2.4 小结 第3章 Java新特性 3.1 Java的一些简单新特性 3.1.1 静态导入 3.1.2 可变参数函数 3.1.3 增强版...
  • Java实现的FTP连接与数据浏览程序 1个目标文件 摘要:Java源码,网络相关,FTP Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 ...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

java实现socket5代理

java 订阅