Server
public class OldServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8888);
while (true) {
Socket accept = serverSocket.accept();
DataInputStream inputStream = new DataInputStream(accept.getInputStream());
try {
byte[] buffer = new byte[4096];
while (true) {
int read = inputStream.read(buffer, 0, buffer.length);
if (-1 == read) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Client
public class OldClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1", 8888);
String fileName = "/Users/xxx/Downloads/bigfile.txt";
InputStream inputStream = new FileInputStream(fileName);
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
byte[] buffer = new byte[4096];
long readCount = 0;
long total = 0;
long startTime = System.currentTimeMillis();
while ((readCount = inputStream.read(buffer)) >= 0) {
total += readCount;
outputStream.write(buffer);
}
System.out.println("發(fā)送總的字節(jié)數(shù):" + total + ",耗時:" + (System.currentTimeMillis() - startTime));
outputStream.close();
inputStream.close();
socket.close();
}
}
Nio Server
public class NewServer {
public static void main(String[] args) throws Exception {
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
ServerSocket serverSocket = serverSocketChannel.socket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(8888));
ByteBuffer buffer = ByteBuffer.allocate(4096);
while (true) {
SocketChannel socketChannel = serverSocketChannel.accept();
socketChannel.configureBlocking(true);
int readCount = 0;
while (-1 != readCount) {
try {
readCount = socketChannel.read(buffer);
} catch (Exception e) {
e.printStackTrace();
}
buffer.rewind();//very important
}
}
}
}
Nio Client
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。