如何将迅雷设为线程2(单线程2号)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将迅雷设为线程2(单线程2号)?相关的知识,希望对你有一定的参考价值。

参考技术A 用过迅雷5的人都知道迅雷文件里有一个文件(download.cfg)这个文件里包含了迅雷许多的参数设置,我们今天就添加一行字可以使迅雷的速度更上一个台阶! 用记事本打开download.cfg后会出现一些数据,找到: [p2s] ftp_exempt_period=60 http_exempt_period=18 https_exempt_period=18 mms_exempt_period=18 mmst_exempt_period=18 然后在原文里添加一行如: [p2s] thread_num=10 ftp_exempt_period=60 http_exempt_period=18 https_exempt_period=18 mms_exempt_period=18 mmst_exempt_period=18 那个<thread_num=10>就是我们所要添加的数据,其中<10>的意思就是让搜索到的侯选资源的线程数变成10(默认的数据是5).当然你也可以改成不大于60的任何数,只要你的带够宽呵呵! 参考技术B 用过迅雷5的人都知道迅雷文件里有一个文件(download.cfg)这个文件里包含了迅雷许多的参数设置,我们今天就添加一行字可以使迅雷的速度更上一个台阶! 用记事本打开download.cfg后会出现一些数据,找到: [p2s] ftp_exempt_period=60 http_exempt_period=18 https_exempt_period=18 mms_exempt_period=18 mmst_exempt_period=18 然后在原文里添加一行如: [p2s] thread_num=10 ftp_exempt_period=60 http_exempt_period=18 https_exempt_period=18 mms_exempt_period=18 mmst_exempt_period=18 那个<thread_num=10>就是我们所要添加的数据,其中<10>的意思就是让搜索到的侯选资源的线程数变成10(默认的数据是5).当然你也可以改成不大于60的任何数,只要你的带够宽呵呵! 参考技术C 工具-配置-连接-线程

Java如何实现多线程传输文件,就像迅雷下载一样,开十多个线程分段传送字节流?

参考技术A 程序分Server和Client

服务器端打开侦听的端口,一有客户端连接就创建两个新的线程来负责这个连接

一个负责客户端发送的信息(ClientMsgCollectThread 类),

另一个负责通过该Socket发送数据(ServerMsgSendThread )

Server.java代码如下:

/*
* 创建日期 2009-3-7
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package faue.MutiUser;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
* 服务器端
*
* @author Faue
*/
public class Server extends ServerSocket

private static final int SERVER_PORT = 10000;

/**
* 构造方法,用于实现连接的监听
*
* @throws IOException
*/
public Server() throws IOException
super(SERVER_PORT);

try
while (true)
Socket socket = super.accept();

new Thread(new ClientMsgCollectThread(socket), "getAndShow"
+ socket.getPort()).start();
new Thread(new ServerMsgSendThread(socket), "send"
+ socket.getPort()).start();


catch (IOException e)
e.printStackTrace();




public static void main(String[] args) throws IOException
new Server();


/**
* 该类用于创建接收客户端发来的信息并显示的线程
*
* @author Faue
* @version 1.0.0
*/
class ClientMsgCollectThread implements Runnable

private Socket client;

private BufferedReader in;

private StringBuffer inputStringBuffer = new StringBuffer("Hello");

/**
* 得到Socket的输入流
*
* @param s
* @throws IOException
*/
public ClientMsgCollectThread(Socket s) throws IOException
client = s;

in = new BufferedReader(new InputStreamReader(client
.getInputStream(), "GBK"));


public void run()
try

while (!client.isClosed())
inputStringBuffer.delete(0, inputStringBuffer.length());
inputStringBuffer.append(in.readLine());

System.out.println(getMsg(inputStringBuffer.toString()));

catch (IOException e)
//e.printStackTrace();
System.out.println(client.toString() + " is closed!");




/**
* 构造显示的字符串
*
* @param line
* @return
*/
private String getMsg(String line)
return client.toString() + " says:" + line;




/**
* 该类用于创建发送数据的线程
*
* @author Faue
* @version 1.0.0
*/
class ServerMsgSendThread implements Runnable

private Socket client;

private PrintWriter out;

private BufferedReader keyboardInput;

private StringBuffer outputStringBuffer = new StringBuffer("Hello");

/**
* 得到键盘的输入流
*
* @param s
* @throws IOException
*/
public ServerMsgSendThread(Socket s) throws IOException
client = s;

out = new PrintWriter(client.getOutputStream(), true);
keyboardInput = new BufferedReader(new InputStreamReader(System.in));



public void run()
try

while (!client.isClosed())
outputStringBuffer.delete(0, outputStringBuffer.length());
outputStringBuffer.append(keyboardInput.readLine());

out.println(outputStringBuffer.toString());

catch (IOException e)
//e.printStackTrace();
System.out.println(client.toString() + " is closed!");








客户端:

实现基于IP地址的连接,连接后也创建两个线程来实现信息的发送和接收

/*
* 创建日期 2009-3-7
*
*/
package faue.MutiUser;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

/**
* 客户端
*
* @author Faue
*/
public class Client

private Socket mySocket;

/**
* 创建线程的构造方法
*
* @param IP
* @throws IOException
*/
public Client(String IP) throws IOException

try
mySocket = new Socket(IP, 10000);
new Thread(new ServerMsgCollectThread(mySocket), "getAndShow"
+ mySocket.getPort()).start();
new Thread(new ClientMsgSendThread(mySocket), "send"
+ mySocket.getPort()).start();

catch (IOException e)
//e.printStackTrace();
System.out.println("Server.IP:" + IP
+ " port:10000 can not be Connected");



public static void main(String[] args) throws IOException
try
new Client(args[0]);
catch (Exception e)
System.out.println("输入的IP地址错误");



/**
* 该类用于创建接收服务端发来的信息并显示的线程
*
* @author Faue
* @version 1.0.0
*/
class ServerMsgCollectThread implements Runnable

private Socket client;

private BufferedReader in;

private StringBuffer inputStringBuffer = new StringBuffer("Hello");

/**
* 得到Socket的输入流
*
* @param s
* @throws IOException
*/
public ServerMsgCollectThread(Socket s) throws IOException
client = s;

in = new BufferedReader(new InputStreamReader(client
.getInputStream(), "GBK"));


public void run()
try

while (!client.isClosed())
inputStringBuffer.delete(0, inputStringBuffer.length());
inputStringBuffer.append(in.readLine());
System.out.println(getMsg(inputStringBuffer.toString()));

catch (IOException e)
//e.printStackTrace();
System.out.println(client.toString() + " is closed!");
System.exit(0);



/**
* 构造输入字符串
*
* @param line
* @return
*/
private String getMsg(String line)
return client.toString() + " says:" + line;




/**
* 该类用于创建发送数据的线程
*
* @author Faue
* @version 1.0.0
*/
class ClientMsgSendThread implements Runnable

private Socket client;

private PrintWriter out;

private BufferedReader keyboardInput;

private StringBuffer outputStringBuffer = new StringBuffer("Hello");

/**
* 得到键盘的输入流
*
* @param s
* @throws IOException
*/
public ClientMsgSendThread(Socket s) throws IOException
client = s;

out = new PrintWriter(client.getOutputStream(), true);
keyboardInput = new BufferedReader(new InputStreamReader(System.in));



public void run()
try

while (!client.isClosed())
outputStringBuffer.delete(0, outputStringBuffer.length());
outputStringBuffer.append(keyboardInput.readLine());

out.println(outputStringBuffer.toString());

out.println("--- See you, bye! ---");
catch (IOException e)
//e.printStackTrace();
System.out.println(client.toString() + " is closed!");
System.exit(0);







如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
参考技术B 是纯Java还是java web?

以上是关于如何将迅雷设为线程2(单线程2号)?的主要内容,如果未能解决你的问题,请参考以下文章

linux单进程如何实现多核cpu多线程分配?

js为什么是单线程的?10分钟了解js引擎的执行机制

单进程单线程的Redis如何能够高并发

问题很难,要慌,redis到底单线程还是多线程?

nodejs真的是单线程吗?

redis单线程问题