mercredi 22 avril 2015
TCP Connection zu langsam
Posted on 11:58 by verona
Guten Tag,
ich wollte einmal Anfragen, ob jemand eine Lösung für mein Problem hätte.
Ich arbeite zur Zeit an einem kleinen Netzwerkcode, jedoch habe ich bemerkt, dass für meine Verwendungszwecke eine größere Lese-/Schreibgeschwindigkeit benötigt wird. Ich habe einige Lektüre zu NIO-Channeln, Selector und Buffern durchgearbeitet, jedoch selbst mit Verbesserung kam keine deutliche Leistungssteigerung zusammen.
Der jetzige Code schafft hochgerechnet ca. 1KB/s ( Ziel wären 5-6 MB/s ).
IDE: Eclipse Luna x64
CPU: Intel Core i7 3770K
RAM: 4x 4GB Kingston Hyperserie
Netzwerktreiber: Atheros Qualcomm Killer Network Manager ( müsste so stimmen )
Server:
Client:
Vielen Dank schon im voraus.
Mit freundlichen Grüßen,
Thalion
ich wollte einmal Anfragen, ob jemand eine Lösung für mein Problem hätte.
Ich arbeite zur Zeit an einem kleinen Netzwerkcode, jedoch habe ich bemerkt, dass für meine Verwendungszwecke eine größere Lese-/Schreibgeschwindigkeit benötigt wird. Ich habe einige Lektüre zu NIO-Channeln, Selector und Buffern durchgearbeitet, jedoch selbst mit Verbesserung kam keine deutliche Leistungssteigerung zusammen.
Der jetzige Code schafft hochgerechnet ca. 1KB/s ( Ziel wären 5-6 MB/s ).
IDE: Eclipse Luna x64
CPU: Intel Core i7 3770K
RAM: 4x 4GB Kingston Hyperserie
Netzwerktreiber: Atheros Qualcomm Killer Network Manager ( müsste so stimmen )
Server:
Java Code:
-
import java.io.IOException;import java.net.InetSocketAddress;
-
import java.nio.ByteBuffer;
-
import java.nio.channels.SelectionKey;
-
import java.nio.channels.Selector;
-
import java.nio.channels.ServerSocketChannel;
-
import java.nio.channels.SocketChannel;
-
import java.util.Iterator;
-
import java.util.Set;
-
-
-
-
-
public class MainClass {
-
-
private static ServerSocketChannel ssc;
-
-
private static Selector selector;
-
-
-
-
init();
-
selector = Selector.open();
-
Thread thread;
-
thread = genComThread();
-
thread.start();
-
}
-
-
-
-
@Override
-
public void run() {
-
while(true) {
-
-
try {
-
-
SocketChannel sc;
-
if((sc = ssc.accept()) != null) {
-
sc.configureBlocking(false);
-
sc.register(selector, (SelectionKey.OP_READ | SelectionKey.OP_WRITE));
-
}
-
-
if(selector.selectNow() > 0) {
-
processChannel(selector.selectedKeys());
-
}
-
-
-
ex.printStackTrace();
-
}
-
-
try {
-
e.printStackTrace();
-
}
-
-
}
-
}
-
-
-
Iterator<SelectionKey> iterator = selectedKeys.iterator();
-
-
SelectionKey sk;
-
SocketChannel sc;
-
while(iterator.hasNext()) {
-
-
sk = iterator.next();
-
if(sk.isReadable()) {
-
sc = (SocketChannel) sk.channel();
-
ByteBuffer buffer = ByteBuffer.allocate(1024);
-
-
try {
-
sk.cancel();
-
ex.printStackTrace();
-
}
-
}
-
-
// iterator.remove();
-
}
-
}
-
-
});
-
}
-
-
ssc = ServerSocketChannel.open();
-
ssc.bind(new InetSocketAddress("127.0.0.1", 55555));
-
ssc.configureBlocking(false);
-
}
-
-
-
}
Client:
Java Code:
-
import java.net.InetSocketAddress;
-
import java.nio.ByteBuffer;
-
import java.nio.channels.SocketChannel;
-
import java.util.Calendar;
-
-
-
-
-
public class CMainClass {
-
-
private static SocketChannel sc;
-
-
-
init();
-
-
for(int i = 0; i < 1024; i ++) {
-
}
-
-
ByteBuffer buffer;
-
buffer = ByteBuffer.allocate(sb.length());
-
buffer.put(sb.toString().getBytes());
-
-
buffer.flip();
-
-
sc.configureBlocking(false);
-
-
while(buffer.hasRemaining()) {
-
sc.write(buffer);
-
}
-
-
buffer.clear();
-
while(sc.read(buffer) < 1)
-
-
}
-
-
sc = SocketChannel.open();
-
sc.connect(new InetSocketAddress("127.0.0.1", 55555));
-
}
-
-
-
}
Vielen Dank schon im voraus.
Mit freundlichen Grüßen,
Thalion
TCP Connection zu langsam
Categories: TCP Connection zu langsam
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire