java网络文件传输的实现.docx

上传人:b****2 文档编号:2180958 上传时间:2022-10-27 格式:DOCX 页数:8 大小:18.37KB
下载 相关 举报
java网络文件传输的实现.docx_第1页
第1页 / 共8页
java网络文件传输的实现.docx_第2页
第2页 / 共8页
java网络文件传输的实现.docx_第3页
第3页 / 共8页
java网络文件传输的实现.docx_第4页
第4页 / 共8页
java网络文件传输的实现.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

java网络文件传输的实现.docx

《java网络文件传输的实现.docx》由会员分享,可在线阅读,更多相关《java网络文件传输的实现.docx(8页珍藏版)》请在冰豆网上搜索。

java网络文件传输的实现.docx

java网络文件传输的实现

java网络文件传输的实现——Socket编程

 AllRightsReserved!

本程序分为服务器和客户端两个小程序。

主要实现的功能是:

客户端向服务器端请求一个文件的传输连接,

服务器接收到请求命令后,要求客户端发送用户名和密码,

如果正确,就执行传输文件的过程,客户端接收完后,

保存到一个文件中并在屏幕上显示出来。

设计原理:

服务器端建立一个SocketServer等待客户端的连接,

每来一个客户端的请求连接,就创建一个新的线程对其进行单独服务,

然后继续等待其他的客户端的连接。

客户端向服务器发送文件传输请求,在服务器端要求鉴权时,

输入用户名和密码发送给服务器验证,如果验证通过就开始文件传输。

 

使用方法,如果需要重新编译的话输入以下两条命令:

javacSendFileSocket.java

javacSendFileClient.java

在命令行下的运行方式:

服务器端:

javaSendFileSocket

客户端:

javaSendFileClientserverIPAddress

例如:

javaSendFileClient192.168.0.153

 

服务器程序:

//packagezieckey.socket;

import.*;

importjava.io.*;

/**

 *一个简单的多线程服务器程序,用于传输文件

 *

 *@authorzieckey

 */

publicclassSendFileSocketextendsThread

{

    /**

    *@paramargs

    */

    publicstaticvoidmain(String[]args)

    {

        /*if(args.length>0)//如果有参数输入就启动服务器程序

        {

            server();

        }else

        {

            //否则启动客户端进程

            client();

        }*/

        server();//启动服务器程序

    }

    privatestaticfinalint    PORT        =6000;

    privateSocket                s;

    privatestaticfinalString    name        ="zieckey";

    privatestaticfinalString    password    ="123456";

    publicSendFileSocket(Sockets)

    {

        this.s=s;

    }

    publicvoidrun()

    {

        try

        {

            OutputStreamos=s.getOutputStream();

            InputStreamis=s.getInputStream();

            os.write("Hello,welcomeyou!

".getBytes());

            byte[]buf=newbyte[100];

            while(true)

            {

                intlen=is.read(buf);

                StringrevStr=newString(buf,0,len);

                System.out.println("Thisclientwantsto"+revStr);

                StringfileName;

                if(revStr.startsWith("get"))//表明客户端请求传输一个文件

                {

                    os.write("Pleaseinputyournameandpassword!

Usingtheformat:

name@password"

                                    .getBytes());

                    fileName=getFileName(revStr);

                    len=is.read(buf);

                    revStr=newString(buf,0,len);

                    System.out.println("Thereceivedusernameandpassword:

"+revStr);

                    if(revStr.startsWith("zieckey@123456"))

                    {

                        FileInputStreamfins=newFileInputStream(fileName);

                        //byte[]fielBuf=newbyte[100];

                        intdata;

                        while(-1!

=(data=fins.read()))//从文件中读取数据,每次读取1字节

                        {

                            os.write(data);//将读取到的数据写到网络数据流中发送给客户段

                        }

                        break;

                    }

                }else

                {

                    os.write("getingfile'susageis:

getfilename".getBytes());

                }

            }

            os.close();

            is.close();

            s.close();

        }catch(Exceptione)

        {

            e.printStackTrace();

        }

    }

    /*

    *作用:

从客户端发来了文件请求命令中提取出所请求的文件名

    *参数:

客户端发来了文件请求命令字符串,应该以“get”开头

    *返回值:

提取出所请求的文件名

    */

    privateStringgetFileName(StringrevStr)

    {

        StringfileName;

        fileName=revStr.substring(3);

        while(fileName.startsWith(""))

        {

            fileName=fileName.substring

(1);

        }

        returnfileName;

    }

    publicstaticvoidserver()

    {

        System.out.println("Thisisserver");

        try

        {

            ServerSocketss=newServerSocket(PORT);

            intcount=0;

            while(true)

            {

                //创建一个Socket等待客户端连接

                Sockets=ss.accept();

                count++;

                System.out.println("Thisisthe"+count+"'stclientconnetion!

");

                newSendFileSocket(s).start();//启动一个线程为这个客户端服务

            }

        }catch(Exceptionex)

        {

            ex.printStackTrace();

        }

    }

    /*publicstaticvoidclient()

    {

        System.out.println("Thisisclient");

        try

        {

            //创建一个Socket

            Sockets=newSocket(InetAddress.getByName(null),PORT);

            OutputStreamos=s.getOutputStream();//输出流

            InputStreamis=s.getInputStream();//输入流

            byte[]buf=newbyte[100];

            intlen=is.read(buf);//从输入流中读取数据到buf

            System.out.println(newString(buf,0,len));

            //向输出流中写入数据,请求传输一个文件

            os.write("getserver.txt".getBytes());

            len=is.read(buf);//从输入流中读取数据到buf

            StringtempStr=newString(buf,0,len);

            if(tempStr.startsWith("Pleaseinputyournameandpassword"))

    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1