我用java的udp协议模拟本机发出大量数据,但是不行。我用du meter看 上传的流量最大2M,一般就是512k-1.5M,谁能帮我看看这个为什么?代码如下:
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import java.net.*;
import java.io.*;
import java.util.*;public class SynJava { public static void main(String arguments[]) {
GreateChar gch = new GreateChar();
ThreadAdd threadAdd = new ThreadAdd(gch);
threadAdd.start();
}
}class GreateChar {
byte ch[] = new byte[10240*3];
int threadCount = 0; GreateChar() {
for (int i = 0; i < ch.length; i++) {
ch[i] = (byte) (Math.random() * 100);
}
} public synchronized void addCount() {
threadCount++;
System.out.println("add = " + threadCount);
} public synchronized void decCount() {
threadCount--;
System.out.println("dec = " + threadCount);
} public int getThreadCount() {
return threadCount;
}}class UrlWeb
extends Thread {
GreateChar gch;
int threadId; UrlWeb(GreateChar gch, int threadId) {
this.gch = gch;
this.threadId = threadId;
} public void run() { try { boolean loop = true;
DatagramSocket sock = new DatagramSocket();
InetAddress address = InetAddress.getByName("192.168.1.1");
DatagramPacket packet = new DatagramPacket(gch.ch, gch.ch.length,
address, 80);
while (loop == true) {
sock.send(packet);
}
System.out.println("ok ThreadID = " + threadId); }
catch (Exception e) {
System.out.println(gch.getThreadCount());
gch.decCount(); }
}
}class ThreadAdd
extends Thread {
GreateChar gch; ThreadAdd(GreateChar gch) {
this.gch = gch;
} public void run() {
while (true) {
System.out.println("threadCount = " + gch.getThreadCount() +
new Date().toString());
int threadCount = gch.getThreadCount();
if (threadCount < 500) {
UrlWeb urlWeb[] = new UrlWeb[500 - threadCount];
for (int i = 0; i < 500 - threadCount; i++) {
System.out.println("add thread!");
gch.addCount();
urlWeb[i] = new UrlWeb(gch, i);
urlWeb[i].start();
}
}
try {
sleep( (int) Math.random() * 100);
}
catch (InterruptedException e) {}
}
}
}
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import java.net.*;
import java.io.*;
import java.util.*;public class SynJava { public static void main(String arguments[]) {
GreateChar gch = new GreateChar();
ThreadAdd threadAdd = new ThreadAdd(gch);
threadAdd.start();
}
}class GreateChar {
byte ch[] = new byte[10240*3];
int threadCount = 0; GreateChar() {
for (int i = 0; i < ch.length; i++) {
ch[i] = (byte) (Math.random() * 100);
}
} public synchronized void addCount() {
threadCount++;
System.out.println("add = " + threadCount);
} public synchronized void decCount() {
threadCount--;
System.out.println("dec = " + threadCount);
} public int getThreadCount() {
return threadCount;
}}class UrlWeb
extends Thread {
GreateChar gch;
int threadId; UrlWeb(GreateChar gch, int threadId) {
this.gch = gch;
this.threadId = threadId;
} public void run() { try { boolean loop = true;
DatagramSocket sock = new DatagramSocket();
InetAddress address = InetAddress.getByName("192.168.1.1");
DatagramPacket packet = new DatagramPacket(gch.ch, gch.ch.length,
address, 80);
while (loop == true) {
sock.send(packet);
}
System.out.println("ok ThreadID = " + threadId); }
catch (Exception e) {
System.out.println(gch.getThreadCount());
gch.decCount(); }
}
}class ThreadAdd
extends Thread {
GreateChar gch; ThreadAdd(GreateChar gch) {
this.gch = gch;
} public void run() {
while (true) {
System.out.println("threadCount = " + gch.getThreadCount() +
new Date().toString());
int threadCount = gch.getThreadCount();
if (threadCount < 500) {
UrlWeb urlWeb[] = new UrlWeb[500 - threadCount];
for (int i = 0; i < 500 - threadCount; i++) {
System.out.println("add thread!");
gch.addCount();
urlWeb[i] = new UrlWeb(gch, i);
urlWeb[i].start();
}
}
try {
sleep( (int) Math.random() * 100);
}
catch (InterruptedException e) {}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货