多线程文件传送
//server
import java.io.*;
import java.net.*;
public class servertest extends ServerSocket{
class ServerThread extends Thread {
private Socket client ;
private File files = null;
private FileInputStream inputtmp = null ;
private DataOutputStream netout = null ;
public ServerThread(Socket tmp)throws IOException {
client = tmp ;
files = new File("server.jpg");
inputtmp = new FileInputStream(files);
netout = new DataOutputStream(client.getOutputStream());
System.out.println("Client("+client.getInetAddress().getHostAddress()+") connect");
start();
}
public void run(){
try {
netout.writeUTF(files.getName());
netout.writeLong(files.length());
byte[] sendBytes = new byte[1024];
int length = 0 ;
while((length = inputtmp.read(sendBytes, 0, sendBytes.length))>0){
netout.write(sendBytes, 0, length);
netout.flush();
}
client.close();
netout.close();
inputtmp.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
public servertest() throws IOException{
super(8580);
System.out.println("server start:");
for(;;){
Socket socket = accept();
new ServerThread(socket);
}
}
@SuppressWarnings("resource")
public static void main(String[]args){
try {
new servertest();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//client
import java.io.*;
import java.net.*;
public class clienttest {
public static void main(String[]args){
Socket client=null ;
FileOutputStream filesoutput=null ;
DataInputStream netin=null ;
try {
client=new Socket("127.0.0.1",8580);
netin=new DataInputStream(client.getInputStream());
String filesname=netin.readUTF();
long length=netin.readLong();
filesoutput=new FileOutputStream(new File("rec.jpg"));
byte[]sendBytes=new byte[1024];
System.out.println("rec files<"+filesname+"> <"+length+">");
for(;;){
int read=0 ;
read=netin.read(sendBytes);
if(read==-1)
break ;
filesoutput.write(sendBytes,0,read);
}
filesoutput.close();
netin.close();
client.close();
System.out.println("<"+filesname+"> end");
}
catch(Exception e){
e.printStackTrace();
}
}
}
参考资料
https://my.oschina.net/leejun2005/blog/104955