Java利用TCP进行文件的传输

采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分。

两个文件的IP,端口都在程序中指定

传输的文件路径也在程序中指定

SendFileServer.java

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为服务器文件

 * 当接受到客户端的请求之后,先向其传输文件名

 * 当客户端接受完毕之后,向客户端传输文件

 * */

 

public class SendFileServer implementsRunnable{

 

         //服务器监听端口

         privatestatic final int MONITORPORT  = 12345;

         privateSocket s ;

        

         publicSendFileServer(Socket s) {

                   super();

                   this.s= s;

         }

 

         publicstatic void server()

         {

                   try{

                            //创建服务器socket

                            ServerSocketss = new ServerSocket(MONITORPORT);

                            while(true)

                            {

                                     //接收到一个客户端连接之后,创建一个新的线程进行服务

                                     //并将联通的socket传给该线程

                                     Sockets = ss.accept();

                                     newThread(new SendFileServer(s)).start();

                            }

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   SendFileServer.server();

         }

 

 

 

         @Override

         publicvoid run() {

                   //TODO Auto-generated method stub

                   byte[]buf = new byte[100];

                   OutputStreamos=null;

                   FileInputStreamfins=null;

                   try{

                            os= s.getOutputStream();

                            //文件路径

                            StringfilePath = "/home/newton/cangjie.mp3";

                            //文件名

                            StringfileName = "cangjie.mp3";

                            System.out.println("将文件名:"+fileName+"传输过去");

                            //先将文件名传输过去

                            os.write(fileName.getBytes());

                            System.out.println("开始传输文件");

                            //将文件传输过去

                            //获取文件

                            fins= new FileInputStream(filePath);

                            intdata;

                            //通过fins读取文件,并通过os将文件传输

                            while(-1!=(data= fins.read()))

                            {

                                     os.write(data);

                            }

                            System.out.println("文件传输结束");

                           

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally

                   {

                            try{

                                     if(fins!=null)fins.close();

                                     if(os!=null)        os.close();

                                     this.s.close();

                            }catch (IOException e) {

                                     e.printStackTrace();

                            }

                           

                   }

                  

         }

 

}


 

SendFileClient.java

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为客户端文件

 * 连接上服务器之后,直接接受文件

 *

 * */

public class SendFileClient {

 

         privatestatic final String SERVERIP = "127.0.0.1";

         privatestatic final int SERVERPORT = 12345;

         privatestatic final int CLIENTPORT = 54321;

        

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   //用来接受传输过来的字符

                   byte[]buf = new byte[100];

                  

                   Sockets = new Socket();

                   try{

                            //建立连接

                            s.connect(newInetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);

                            InputStreamis = s.getInputStream();

                            //接收传输来的文件名

                            intlen = is.read(buf);

                            StringfileName = new String(buf,0,len);

                            System.out.println(fileName);

                           

                            //接收传输来的文件

                            FileOutputStreamfos = new FileOutputStream(fileName);

                            intdata;

                            while(-1!=(data= is.read()))

                            {

                                     fos.write(data);

                            }

                           

                            is.close();

                            s.close();

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

 

         }

 

}

 

Java利用TCP进行文件的传输

参考了该篇文章http://wenku.baidu.com/view/71baf9db50e2524de5187ea0.html

并对其进行了简化与改动

 

采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分。

两个文件的IP,端口都在程序中指定

传输的文件路径也在程序中指定

SendFileServer.java

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为服务器文件

 * 当接受到客户端的请求之后,先向其传输文件名

 * 当客户端接受完毕之后,向客户端传输文件

 * */

 

public class SendFileServer implementsRunnable{

 

         //服务器监听端口

         privatestatic final int MONITORPORT  = 12345;

         privateSocket s ;

        

         publicSendFileServer(Socket s) {

                   super();

                   this.s= s;

         }

 

         publicstatic void server()

         {

                   try{

                            //创建服务器socket

                            ServerSocketss = new ServerSocket(MONITORPORT);

                            while(true)

                            {

                                     //接收到一个客户端连接之后,创建一个新的线程进行服务

                                     //并将联通的socket传给该线程

                                     Sockets = ss.accept();

                                     newThread(new SendFileServer(s)).start();

                            }

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   SendFileServer.server();

         }

 

 

 

         @Override

         publicvoid run() {

                   //TODO Auto-generated method stub

                   byte[]buf = new byte[100];

                   OutputStreamos=null;

                   FileInputStreamfins=null;

                   try{

                            os= s.getOutputStream();

                            //文件路径

                            StringfilePath = "/home/newton/cangjie.mp3";

                            //文件名

                            StringfileName = "cangjie.mp3";

                            System.out.println("将文件名:"+fileName+"传输过去");

                            //先将文件名传输过去

                            os.write(fileName.getBytes());

                            System.out.println("开始传输文件");

                            //将文件传输过去

                            //获取文件

                            fins= new FileInputStream(filePath);

                            intdata;

                            //通过fins读取文件,并通过os将文件传输

                            while(-1!=(data= fins.read()))

                            {

                                     os.write(data);

                            }

                            System.out.println("文件传输结束");

                           

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally

                   {

                            try{

                                     if(fins!=null)fins.close();

                                     if(os!=null)        os.close();

                                     this.s.close();

                            }catch (IOException e) {

                                     e.printStackTrace();

                            }

                           

                   }

                  

         }

 

}


 

SendFileClient.java

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为客户端文件

 * 连接上服务器之后,直接接受文件

 *

 * */

public class SendFileClient {

 

         privatestatic final String SERVERIP = "127.0.0.1";

         privatestatic final int SERVERPORT = 12345;

         privatestatic final int CLIENTPORT = 54321;

        

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   //用来接受传输过来的字符

                   byte[]buf = new byte[100];

                  

                   Sockets = new Socket();

                   try{

                            //建立连接

                            s.connect(newInetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);

                            InputStreamis = s.getInputStream();

                            //接收传输来的文件名

                            intlen = is.read(buf);

                            StringfileName = new String(buf,0,len);

                            System.out.println(fileName);

                           

                            //接收传输来的文件

                            FileOutputStreamfos = new FileOutputStream(fileName);

                            intdata;

                            while(-1!=(data= is.read()))

                            {

                                     fos.write(data);

                            }

                           

                            is.close();

                            s.close();

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

 

         }

 

}

 

Java利用TCP进行文件的传输

参考了该篇文章http://wenku.baidu.com/view/71baf9db50e2524de5187ea0.html

并对其进行了简化与改动

 

采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分。

两个文件的IP,端口都在程序中指定

传输的文件路径也在程序中指定

SendFileServer.java

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为服务器文件

 * 当接受到客户端的请求之后,先向其传输文件名

 * 当客户端接受完毕之后,向客户端传输文件

 * */

 

public class SendFileServer implementsRunnable{

 

         //服务器监听端口

         privatestatic final int MONITORPORT  = 12345;

         privateSocket s ;

        

         publicSendFileServer(Socket s) {

                   super();

                   this.s= s;

         }

 

         publicstatic void server()

         {

                   try{

                            //创建服务器socket

                            ServerSocketss = new ServerSocket(MONITORPORT);

                            while(true)

                            {

                                     //接收到一个客户端连接之后,创建一个新的线程进行服务

                                     //并将联通的socket传给该线程

                                     Sockets = ss.accept();

                                     newThread(new SendFileServer(s)).start();

                            }

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   SendFileServer.server();

         }

 

 

 

         @Override

         publicvoid run() {

                   //TODO Auto-generated method stub

                   byte[]buf = new byte[100];

                   OutputStreamos=null;

                   FileInputStreamfins=null;

                   try{

                            os= s.getOutputStream();

                            //文件路径

                            StringfilePath = "/home/newton/cangjie.mp3";

                            //文件名

                            StringfileName = "cangjie.mp3";

                            System.out.println("将文件名:"+fileName+"传输过去");

                            //先将文件名传输过去

                            os.write(fileName.getBytes());

                            System.out.println("开始传输文件");

                            //将文件传输过去

                            //获取文件

                            fins= new FileInputStream(filePath);

                            intdata;

                            //通过fins读取文件,并通过os将文件传输

                            while(-1!=(data= fins.read()))

                            {

                                     os.write(data);

                            }

                            System.out.println("文件传输结束");

                           

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally

                   {

                            try{

                                     if(fins!=null)fins.close();

                                     if(os!=null)        os.close();

                                     this.s.close();

                            }catch (IOException e) {

                                     e.printStackTrace();

                            }

                           

                   }

                  

         }

 

}


 

SendFileClient.java

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为客户端文件

 * 连接上服务器之后,直接接受文件

 *

 * */

public class SendFileClient {

 

         privatestatic final String SERVERIP = "127.0.0.1";

         privatestatic final int SERVERPORT = 12345;

         privatestatic final int CLIENTPORT = 54321;

        

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   //用来接受传输过来的字符

                   byte[]buf = new byte[100];

                  

                   Sockets = new Socket();

                   try{

                            //建立连接

                            s.connect(newInetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);

                            InputStreamis = s.getInputStream();

                            //接收传输来的文件名

                            intlen = is.read(buf);

                            StringfileName = new String(buf,0,len);

                            System.out.println(fileName);

                           

                            //接收传输来的文件

                            FileOutputStreamfos = new FileOutputStream(fileName);

                            intdata;

                            while(-1!=(data= is.read()))

                            {

                                     fos.write(data);

                            }

                           

                            is.close();

                            s.close();

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

 

         }

 

}

 

Java利用TCP进行文件的传输

参考了该篇文章http://wenku.baidu.com/view/71baf9db50e2524de5187ea0.html

并对其进行了简化与改动

 

采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分。

两个文件的IP,端口都在程序中指定

传输的文件路径也在程序中指定

SendFileServer.java

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为服务器文件

 * 当接受到客户端的请求之后,先向其传输文件名

 * 当客户端接受完毕之后,向客户端传输文件

 * */

 

public class SendFileServer implementsRunnable{

 

         //服务器监听端口

         privatestatic final int MONITORPORT  = 12345;

         privateSocket s ;

        

         publicSendFileServer(Socket s) {

                   super();

                   this.s= s;

         }

 

         publicstatic void server()

         {

                   try{

                            //创建服务器socket

                            ServerSocketss = new ServerSocket(MONITORPORT);

                            while(true)

                            {

                                     //接收到一个客户端连接之后,创建一个新的线程进行服务

                                     //并将联通的socket传给该线程

                                     Sockets = ss.accept();

                                     newThread(new SendFileServer(s)).start();

                            }

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   SendFileServer.server();

         }

 

 

 

         @Override

         publicvoid run() {

                   //TODO Auto-generated method stub

                   byte[]buf = new byte[100];

                   OutputStreamos=null;

                   FileInputStreamfins=null;

                   try{

                            os= s.getOutputStream();

                            //文件路径

                            StringfilePath = "/home/newton/cangjie.mp3";

                            //文件名

                            StringfileName = "cangjie.mp3";

                            System.out.println("将文件名:"+fileName+"传输过去");

                            //先将文件名传输过去

                            os.write(fileName.getBytes());

                            System.out.println("开始传输文件");

                            //将文件传输过去

                            //获取文件

                            fins= new FileInputStream(filePath);

                            intdata;

                            //通过fins读取文件,并通过os将文件传输

                            while(-1!=(data= fins.read()))

                            {

                                     os.write(data);

                            }

                            System.out.println("文件传输结束");

                           

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally

                   {

                            try{

                                     if(fins!=null)fins.close();

                                     if(os!=null)        os.close();

                                     this.s.close();

                            }catch (IOException e) {

                                     e.printStackTrace();

                            }

                           

                   }

                  

         }

 

}


 

SendFileClient.java

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为客户端文件

 * 连接上服务器之后,直接接受文件

 *

 * */

public class SendFileClient {

 

         privatestatic final String SERVERIP = "127.0.0.1";

         privatestatic final int SERVERPORT = 12345;

         privatestatic final int CLIENTPORT = 54321;

        

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   //用来接受传输过来的字符

                   byte[]buf = new byte[100];

                  

                   Sockets = new Socket();

                   try{

                            //建立连接

                            s.connect(newInetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);

                            InputStreamis = s.getInputStream();

                            //接收传输来的文件名

                            intlen = is.read(buf);

                            StringfileName = new String(buf,0,len);

                            System.out.println(fileName);

                           

                            //接收传输来的文件

                            FileOutputStreamfos = new FileOutputStream(fileName);

                            intdata;

                            while(-1!=(data= is.read()))

                            {

                                     fos.write(data);

                            }

                           

                            is.close();

                            s.close();

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

 

         }

 

}

 

Java利用TCP进行文件的传输

参考了该篇文章http://wenku.baidu.com/view/71baf9db50e2524de5187ea0.html

并对其进行了简化与改动

 

采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分。

两个文件的IP,端口都在程序中指定

传输的文件路径也在程序中指定

SendFileServer.java

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为服务器文件

 * 当接受到客户端的请求之后,先向其传输文件名

 * 当客户端接受完毕之后,向客户端传输文件

 * */

 

public class SendFileServer implementsRunnable{

 

         //服务器监听端口

         privatestatic final int MONITORPORT  = 12345;

         privateSocket s ;

        

         publicSendFileServer(Socket s) {

                   super();

                   this.s= s;

         }

 

         publicstatic void server()

         {

                   try{

                            //创建服务器socket

                            ServerSocketss = new ServerSocket(MONITORPORT);

                            while(true)

                            {

                                     //接收到一个客户端连接之后,创建一个新的线程进行服务

                                     //并将联通的socket传给该线程

                                     Sockets = ss.accept();

                                     newThread(new SendFileServer(s)).start();

                            }

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   SendFileServer.server();

         }

 

 

 

         @Override

         publicvoid run() {

                   //TODO Auto-generated method stub

                   byte[]buf = new byte[100];

                   OutputStreamos=null;

                   FileInputStreamfins=null;

                   try{

                            os= s.getOutputStream();

                            //文件路径

                            StringfilePath = "/home/newton/cangjie.mp3";

                            //文件名

                            StringfileName = "cangjie.mp3";

                            System.out.println("将文件名:"+fileName+"传输过去");

                            //先将文件名传输过去

                            os.write(fileName.getBytes());

                            System.out.println("开始传输文件");

                            //将文件传输过去

                            //获取文件

                            fins= new FileInputStream(filePath);

                            intdata;

                            //通过fins读取文件,并通过os将文件传输

                            while(-1!=(data= fins.read()))

                            {

                                     os.write(data);

                            }

                            System.out.println("文件传输结束");

                           

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally

                   {

                            try{

                                     if(fins!=null)fins.close();

                                     if(os!=null)        os.close();

                                     this.s.close();

                            }catch (IOException e) {

                                     e.printStackTrace();

                            }

                           

                   }

                  

         }

 

}


 

SendFileClient.java

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为客户端文件

 * 连接上服务器之后,直接接受文件

 *

 * */

public class SendFileClient {

 

         privatestatic final String SERVERIP = "127.0.0.1";

         privatestatic final int SERVERPORT = 12345;

         privatestatic final int CLIENTPORT = 54321;

        

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   //用来接受传输过来的字符

                   byte[]buf = new byte[100];

                  

                   Sockets = new Socket();

                   try{

                            //建立连接

                            s.connect(newInetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);

                            InputStreamis = s.getInputStream();

                            //接收传输来的文件名

                            intlen = is.read(buf);

                            StringfileName = new String(buf,0,len);

                            System.out.println(fileName);

                           

                            //接收传输来的文件

                            FileOutputStreamfos = new FileOutputStream(fileName);

                            intdata;

                            while(-1!=(data= is.read()))

                            {

                                     fos.write(data);

                            }

                           

                            is.close();

                            s.close();

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

 

         }

 

}

 

Java利用TCP进行文件的传输

参考了该篇文章http://wenku.baidu.com/view/71baf9db50e2524de5187ea0.html

并对其进行了简化与改动

 

采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分。

两个文件的IP,端口都在程序中指定

传输的文件路径也在程序中指定

SendFileServer.java

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为服务器文件

 * 当接受到客户端的请求之后,先向其传输文件名

 * 当客户端接受完毕之后,向客户端传输文件

 * */

 

public class SendFileServer implementsRunnable{

 

         //服务器监听端口

         privatestatic final int MONITORPORT  = 12345;

         privateSocket s ;

        

         publicSendFileServer(Socket s) {

                   super();

                   this.s= s;

         }

 

         publicstatic void server()

         {

                   try{

                            //创建服务器socket

                            ServerSocketss = new ServerSocket(MONITORPORT);

                            while(true)

                            {

                                     //接收到一个客户端连接之后,创建一个新的线程进行服务

                                     //并将联通的socket传给该线程

                                     Sockets = ss.accept();

                                     newThread(new SendFileServer(s)).start();

                            }

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   SendFileServer.server();

         }

 

 

 

         @Override

         publicvoid run() {

                   //TODO Auto-generated method stub

                   byte[]buf = new byte[100];

                   OutputStreamos=null;

                   FileInputStreamfins=null;

                   try{

                            os= s.getOutputStream();

                            //文件路径

                            StringfilePath = "/home/newton/cangjie.mp3";

                            //文件名

                            StringfileName = "cangjie.mp3";

                            System.out.println("将文件名:"+fileName+"传输过去");

                            //先将文件名传输过去

                            os.write(fileName.getBytes());

                            System.out.println("开始传输文件");

                            //将文件传输过去

                            //获取文件

                            fins= new FileInputStream(filePath);

                            intdata;

                            //通过fins读取文件,并通过os将文件传输

                            while(-1!=(data= fins.read()))

                            {

                                     os.write(data);

                            }

                            System.out.println("文件传输结束");

                           

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally

                   {

                            try{

                                     if(fins!=null)fins.close();

                                     if(os!=null)        os.close();

                                     this.s.close();

                            }catch (IOException e) {

                                     e.printStackTrace();

                            }

                           

                   }

                  

         }

 

}


 

SendFileClient.java

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为客户端文件

 * 连接上服务器之后,直接接受文件

 *

 * */

public class SendFileClient {

 

         privatestatic final String SERVERIP = "127.0.0.1";

         privatestatic final int SERVERPORT = 12345;

         privatestatic final int CLIENTPORT = 54321;

        

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   //用来接受传输过来的字符

                   byte[]buf = new byte[100];

                  

                   Sockets = new Socket();

                   try{

                            //建立连接

                            s.connect(newInetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);

                            InputStreamis = s.getInputStream();

                            //接收传输来的文件名

                            intlen = is.read(buf);

                            StringfileName = new String(buf,0,len);

                            System.out.println(fileName);

                           

                            //接收传输来的文件

                            FileOutputStreamfos = new FileOutputStream(fileName);

                            intdata;

                            while(-1!=(data= is.read()))

                            {

                                     fos.write(data);

                            }

                           

                            is.close();

                            s.close();

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

 

         }

 

}

 

Java利用TCP进行文件的传输

参考了该篇文章http://wenku.baidu.com/view/71baf9db50e2524de5187ea0.html

并对其进行了简化与改动

 

采用TCP进行通讯,需要服务器和客户端两个部分,因此程序包含SendFileServer.java和SendFileClient.java两个部分。

两个文件的IP,端口都在程序中指定

传输的文件路径也在程序中指定

SendFileServer.java

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为服务器文件

 * 当接受到客户端的请求之后,先向其传输文件名

 * 当客户端接受完毕之后,向客户端传输文件

 * */

 

public class SendFileServer implementsRunnable{

 

         //服务器监听端口

         privatestatic final int MONITORPORT  = 12345;

         privateSocket s ;

        

         publicSendFileServer(Socket s) {

                   super();

                   this.s= s;

         }

 

         publicstatic void server()

         {

                   try{

                            //创建服务器socket

                            ServerSocketss = new ServerSocket(MONITORPORT);

                            while(true)

                            {

                                     //接收到一个客户端连接之后,创建一个新的线程进行服务

                                     //并将联通的socket传给该线程

                                     Sockets = ss.accept();

                                     newThread(new SendFileServer(s)).start();

                            }

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   SendFileServer.server();

         }

 

 

 

         @Override

         publicvoid run() {

                   //TODO Auto-generated method stub

                   byte[]buf = new byte[100];

                   OutputStreamos=null;

                   FileInputStreamfins=null;

                   try{

                            os= s.getOutputStream();

                            //文件路径

                            StringfilePath = "/home/newton/cangjie.mp3";

                            //文件名

                            StringfileName = "cangjie.mp3";

                            System.out.println("将文件名:"+fileName+"传输过去");

                            //先将文件名传输过去

                            os.write(fileName.getBytes());

                            System.out.println("开始传输文件");

                            //将文件传输过去

                            //获取文件

                            fins= new FileInputStream(filePath);

                            intdata;

                            //通过fins读取文件,并通过os将文件传输

                            while(-1!=(data= fins.read()))

                            {

                                     os.write(data);

                            }

                            System.out.println("文件传输结束");

                           

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally

                   {

                            try{

                                     if(fins!=null)fins.close();

                                     if(os!=null)        os.close();

                                     this.s.close();

                            }catch (IOException e) {

                                     e.printStackTrace();

                            }

                           

                   }

                  

         }

 

}


 

SendFileClient.java

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

 

/*

 * 用TCP进行文件传输

 * 此文件为客户端文件

 * 连接上服务器之后,直接接受文件

 *

 * */

public class SendFileClient {

 

         privatestatic final String SERVERIP = "127.0.0.1";

         privatestatic final int SERVERPORT = 12345;

         privatestatic final int CLIENTPORT = 54321;

        

        

         /**

          * @param args

          */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   //用来接受传输过来的字符

                   byte[]buf = new byte[100];

                  

                   Sockets = new Socket();

                   try{

                            //建立连接

                            s.connect(newInetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);

                            InputStreamis = s.getInputStream();

                            //接收传输来的文件名

                            intlen = is.read(buf);

                            StringfileName = new String(buf,0,len);

                            System.out.println(fileName);

                           

                            //接收传输来的文件

                            FileOutputStreamfos = new FileOutputStream(fileName);

                            intdata;

                            while(-1!=(data= is.read()))

                            {

                                     fos.write(data);

                            }

                           

                            is.close();

                            s.close();

                           

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

 

         }

 

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值