`
lufengdie
  • 浏览: 247845 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

通过 Socket传送文件的例子

阅读更多


一、表示Socket服务端的类:Server.java


public class Server extends Thread{   
    public static int port = 6789;   
    public static String host = "10.60.1.127";   
    private static ServerSocket server = null;   
       
    public void run() {   
        if(server == null){   
            try{   
                //1、新建ServerSocket实例   
                server = new ServerSocket(port);   
            }catch(IOException e){   
                e.printStackTrace();   
            }   
        }   
           
        System.out.println("服务器启动...");   
        while(true){   
            try{   
                //2、访问ServerSocket实例的accept方法取得一个客户端Socket对象   
                Socket client = server.accept();   
                if(client == null) continue;   
                   
                new SocketConnection(client, "D:\\").start();   
                   
            }catch(IOException ex){   
                ex.printStackTrace();   
            }   
        }   
    }   
  
    public static void main(String[] args) {   
        new Server().start();   
    }   
       
}  







Socket客户端处理类:SocketConnection.java



public class SocketConnection extends Thread{   
    private Socket client;   
    private String filepath;   
       
    public SocketConnection(Socket client, String filepath){   
        this.client = client;   
        this.filepath = filepath;   
    }   
       
    public void run(){   
        if(client == null) return;   
           
        DataInputStream in = null;   
        DataOutputStream writer = null;   
           
        try{   
            //3、访问Socket对象的getInputStream方法取得客户端发送过来的数据流   
            in = new DataInputStream(new BufferedInputStream(client.getInputStream()));   
               
            String fileName = in.readUTF(); //取得附带的文件名   
               
            if(filepath.endsWith("/") == false && filepath.endsWith("\\") == false){   
                filepath += "\\";   
            }   
            filepath += fileName;   
               
            //4、将数据流写到文件中   
            writer = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(new File(filepath)))));   
               
            int bufferSize = 2048;   
            byte[] buf = new byte[bufferSize];   
               
            int read = 0;   
            while((read=in.read(buf)) != -1){   
                writer.write(buf, 0, read);   
            }   
               
            writer.flush();   
            System.out.println("数据接收完毕");   
               
        }catch(IOException ex){   
            ex.printStackTrace();   
        }finally{   
            try{   
                in.close();   
                writer.close();   
                client.close();   
            }catch(IOException e){   
                e.printStackTrace();   
            }   
        }   
           
    }   
       
}  





二、表示客户端的类:Client.java



public class Client {   
    private Socket client;   
    private boolean connected;   
       
    public boolean isConnected() {   
        return connected;   
    }   
  
    public void setConnected(boolean connected) {   
        this.connected = connected;   
    }   
  
    public Client(String host, int port){   
        try {   
            //1、新建Socket对象   
            client = new Socket(host, port);   
            System.out.println("服务器连接成功!");   
               
            this.connected = true;   
               
        } catch (UnknownHostException e) {   
            this.connected = false;   
            close();   
        } catch (IOException e) {   
            System.out.println("服务器连接失败!");   
            this.connected = false;   
            close();   
        }   
    }   
       
    /**  
     * 将文件内容发送出去  
     *   
     * @param filepath 文件的全路径名  
     */  
    public void sendFile(String filepath){   
        DataOutputStream out = null;   
        DataInputStream reader = null;   
        try{   
            if(client == null) return;   
  
            File file = new File(filepath);   
            reader = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));   
               
            //2、将文件内容写到Socket的输出流中   
            out = new DataOutputStream(client.getOutputStream());   
               
            out.writeUTF(file.getName()); //附带文件名   
               
            int bufferSize = 2048; //2K   
            byte[] buf = new byte[bufferSize];   
               
            int read = 0;   
            while((read=reader.read(buf)) != -1){   
                out.write(buf, 0, read);   
            }   
               
            out.flush();   
               
        }catch(IOException ex){   
            ex.printStackTrace();   
            close();   
        }finally{   
            try {   
                reader.close();   
                out.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
    }   
       
    /**  
     * 关闭Socket  
     */  
    public void close(){   
        if(client != null){   
            try {   
                client.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
    }   
       
    public static void main(String[] args) {   
        Client client = new Client(Server.host, Server.port);   
        if(client.isConnected()){   
            client.sendFile("E:\\EKI.txt");   
            client.close();   
        }   
    }   
       
}  











分享到:
评论

相关推荐

    通过Socket传送文件的例子

    本文将基于给定的标题“通过Socket传送文件的例子”和描述来深入探讨Socket编程以及如何利用它进行文件传输。 首先,Socket是网络编程中的一个接口,它允许应用程序通过网络发送和接收数据。在Java中,Socket类提供...

    C#Socket文件传输简单例子(将文件名和文件同时传输)

    - **安全性**:如果是在不安全的网络环境中传输文件,应考虑使用SSL/TLS等加密机制保证数据的安全性。 - **文件分块**:对于大文件,可能需要分块传输,每次发送一小部分,以避免内存溢出。 在压缩包中的`Socket...

    socket传输文件例子demo

    总之,这个"socket传输文件例子demo"是一个实践性的学习资源,可以帮助开发者深入理解如何在VC++环境中利用Socket进行文件传输,同时也可以作为开发自己网络通信软件的基础。通过阅读和分析源代码,我们可以学习到...

    delphi使用socket通讯例子-文件传输

    通过以上步骤,你可以在Delphi中实现一个基本的文件传输系统,而文件名称列表(socket)可能代表了实际项目中多个文件的传输需求。在实际应用中,你可能需要对这个基础进行扩展,例如支持多文件传输、进度显示、断点...

    C#语言Socket传文件例子

    这个“C#语言Socket传文件例子”提供了学习Socket通信和文件传输的实践平台。通过理解和实践这个例子,开发者可以掌握Socket编程的基本技巧,为进一步开发复杂的网络应用打下基础。在实际项目中,还可以考虑增加断点...

    VC socket传送文件的例子(转载)

    标题"VC socket传送文件的例子(转载)"揭示了我们将讨论如何使用Visual C++(简称VC)通过Socket接口来实现文件的发送与接收。 首先,Socket是网络编程的基本组件,它提供了进程间通信(IPC)的接口,使得运行在...

    socket文件传输(TCP)源码实例

    在这个“socket文件传输(TCP)源码实例”中,我们将深入理解如何利用TCP协议通过socket进行文件传输。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,确保了数据的...

    关于C语言 socket数据 文件传输的例子

    这里我们将重点讨论使用TCP协议的SOCK_STREAM,因为它是传输文件的理想选择,因为它提供了一种可靠的数据传输机制。 创建socket的第一步是调用socket()函数,该函数返回一个socket描述符,它是后续操作的基础。然后...

    socket传输文件实例

    总结,Socket传输文件实例涉及到网络通信基础、Socket编程、文件操作以及错误处理等多个方面,通过理解这些知识点,我们可以构建自己的文件传输系统,实现两台计算机之间的文件共享。在实践中,我们应根据具体需求...

    Socket编程简单例子

    在Android应用开发中,Socket通信常用于实现即时通讯、文件传输等功能,例如聊天应用、在线游戏等。 总结一下,这个“Socket编程简单例子”涵盖了以下知识点: 1. Socket的基本原理和作用 2. 在Android客户端创建...

    一个使用socket实现文件传输的例子

    通过以上步骤和注意事项,我们可以构建一个基本的Socket文件传输系统。这个系统虽然简单,但足以展示Socket编程的基本原理和文件传输的核心逻辑。在实际项目中,可以根据需求进一步扩展和优化,例如添加身份验证、...

    Java基于Socket文件传输示例:服务器端和客户端

    服务器端的核心是监听特定端口(在这个例子中是8821)上的连接请求,并在接收到连接后传输文件。以下是关键步骤: 1. **创建ServerSocket**:`ServerSocket ss = new ServerSocket(port);` 这行代码初始化了一个...

    socket传文件例子.txt

    在IT领域,尤其是在网络编程中,使用socket进行文件传输是一个常见的需求。...以上就是通过socket进行文件传输的主要步骤,涉及到socket的创建、绑定、监听、接受连接、数据收发以及文件传输等关键环节。

    TCP.rar_TCP 传输_TCP 文件传输_socket+文件传输_tcp文件传输_文件传输 C

    描述中的"socket 文件传输,基于TCP的文件传输,是个不错的例子"进一步强调了: 1. **Socket文件传输**:通过socket接口,开发者可以直接控制TCP连接,实现文件的发送和接收,这对于跨网络的文件共享和备份尤其有用...

    Socket编程例子

    Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在本示例中,我们探讨的是如何使用...通过"TestSocket"这个例子,你可以更深入地学习如何在实际项目中运用Socket,从而实现跨网络的高效通信。

    文件传输源代码实例(Socket)

    这个是我自己编写的网络传输,主要可以传输文件和信息(支持多文件多用户传输)。用C#编写,使用了Socket。包含了一个传输类,一个数据库连接类。是学习网络传输的好帮手。(完整源代码,采用VS2005编写)绝对可以...

    SOCKET 文件传输

    这个例子展示了如何创建Socket,发送文件和接收文件的基本流程。请注意,这只是一个基础示例,实际应用中需要考虑更多的细节,如异常处理、超时设置、多线程处理等。 至于“工具”,在进行Socket文件传输时,可能会...

    Socket 传输文件代码转载

    在这个例子中,我们看到的是一个C#实现的Socket文件传输示例,用于发送文本文件。这个程序分为两部分:发送文件的窗体和接收文件的窗体。 首先,让我们详细解释发送文件的部分: 1. **引用库**:程序使用了`System...

Global site tag (gtag.js) - Google Analytics