这个Client是用来传送一个文件的package tcpEcho;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class Client2 {
private Socket socket; private PrintWriter out; private BufferedReader in; private BufferedReader fromFile; public Client2() {
try {
socket = new Socket("localhost", 20001);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
fromFile = new BufferedReader(new FileReader("data"));
socket.setSendBufferSize(1024);
socket.setReceiveBufferSize(1024);
} catch (IOException e) { }
} public void run() {
try {
int count = 0;
while (fromFile.ready()) {
int data = fromFile.read();
char temp = (char)data;
System.out.println(temp);
out.println(temp);
out.flush();
count ++;
// in.read();
System.out.println(in.read());
}
System.out.println("File transfer is completed.");
System.out.println(count);
in.close();
out.close();
fromFile.close();
socket.close();
} catch (IOException e) { }
}
public static void main(String args[]){
Client2 myClient = new Client2();
myClient.run();
}
}测试的文件是一个文本,里面都是0。。 我的问题是怎样把Buffer用0填满然后发送出去,我现的代码是把0一个个的发送出去,太没效率了。
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class Client2 {
private Socket socket; private PrintWriter out; private BufferedReader in; private BufferedReader fromFile; public Client2() {
try {
socket = new Socket("localhost", 20001);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
fromFile = new BufferedReader(new FileReader("data"));
socket.setSendBufferSize(1024);
socket.setReceiveBufferSize(1024);
} catch (IOException e) { }
} public void run() {
try {
int count = 0;
while (fromFile.ready()) {
int data = fromFile.read();
char temp = (char)data;
System.out.println(temp);
out.println(temp);
out.flush();
count ++;
// in.read();
System.out.println(in.read());
}
System.out.println("File transfer is completed.");
System.out.println(count);
in.close();
out.close();
fromFile.close();
socket.close();
} catch (IOException e) { }
}
public static void main(String args[]){
Client2 myClient = new Client2();
myClient.run();
}
}测试的文件是一个文本,里面都是0。。 我的问题是怎样把Buffer用0填满然后发送出去,我现的代码是把0一个个的发送出去,太没效率了。
java.io.FileInputStream is = new java.io.FileInputStream(file);
byte[] buf = new byte[(int)file.length()];
is.read(buf);
out.write(buf);
out.flush();
out.close();
is.close();
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class Client {
public static void main(String args[]) {
int port = 20001;
try {
Socket socket = new Socket("localhost", port);
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
BufferedReader fromFile = new BufferedReader(new FileReader("data")); int count = 0;
while (fromFile.ready()) {
String data = fromFile.readLine();
System.out.println("1");
out.println(data);
System.out.println("2");
out.flush();
System.out.println("3");
// in.readLine();
count++;
System.out.println(count);
}
out.println("exit");
System.out.println("File transfer is completed.");
System.out.println(count + "packets has been sent.");
fromFile.close();
socket.close();
} catch (IOException e) {
System.out.println(e);
}
}}