Java网络编程 - 客户端向服务器端发送文件的简单实现

1、Client

package cn.qi.Client;

import java.io.*;
import java.net.Socket;

public class Client {
    Socket clientSocket;
    Client() {
        // 建立连接到服务器端的socket
        try {
            clientSocket = new Socket("127.0.0.1", 5000);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void readFileAndSent() throws IOException {
        OutputStream os = clientSocket.getOutputStream();
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

        // 读文件
        String path = this.getClass().getClassLoader().getResource("./prop/text.txt").getPath();
        FileReader fr = new FileReader(path);
        BufferedReader br = new BufferedReader(fr);
        String str = null;
        while((str = br.readLine()) != null) {
            System.out.println(str);
            // 每读一行,写一行
            bw.write(str);
            // 获取当前OS的换行符并写入
            bw.write(System.getProperty("line.separator"));
            bw.flush();
        }

        // 关闭流
        bw.close();
        br.close();
        fr.close();

        clientSocket.close();
    }
}

2、Server

package cn.qi.Server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    ServerSocket serverSocket;
    Server() {
        // 建立severSocket,监听对应端口
        try {
            serverSocket = new ServerSocket(5000);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void readFileAndWrite() throws IOException {
        // 获取写入路径
        String path = this.getClass().getClassLoader().getResource("./prop/").getPath();
        // 服务器端写文件
        FileWriter fw = new FileWriter(path+"textSocket.txt");
        BufferedWriter bw = new BufferedWriter(fw);

        // 写的内容来自网络端
        while (true) {
            Socket socket = serverSocket.accept();
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = null;
            while((str = br.readLine()) != null) {
                // 读到了客户端发送的信息
                bw.write(str);
                // 获取当前OS的换行符并写入
                bw.write(System.getProperty("line.separator"));
                bw.flush();
            }

            // 关闭流
            br.close();

            socket.close();
        }
    }
}

原文地址:https://www.cnblogs.com/GjqDream/p/11624327.html

时间: 2024-07-29 16:20:26

Java网络编程 - 客户端向服务器端发送文件的简单实现的相关文章

C#网络编程(订立协议和发送文件)

C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Receive缩写),则分别从服务端接收文件Server01.jpg.Server02.jpg.Server03.

Java 网络编程 字符流的发送与接收 自定义数据边界

在网络编程中,客户端调用了flush方法,就会将缓存在字符流中的文本发送给服务器,服务器该怎样判断客户端发送的文本已经结束了呢? 我们先看一个例子: 客户端: import java.io.IOException; import java.io.PrintWriter; import java.net.InetSocketAddress; import java.net.Socket; import java.util.Scanner; /** * Created by 290248126 on

Java网络编程(客户端和服务端原理)

浏览器端输入自己主机的IP地址+端口号(8888),会看到服务器返回的数据内容,Eclipse控制台会打印显示收到的信息, 通过我们自定义的服务器,可以看到浏览器端向服务器发送的请求信息的格式是: 请求行....... GET / HTTP/1.1  请求方式  /myweb/1.html  请求的资源路径   http协议版本.请求消息头 . 属性名:属性值 eclipse的控制台的输出: 192.168.2.103....connected//这个是我自己程序的输出GET / HTTP/1.

C#网络编程(订立协议和发送文件) - Part.4

转载自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Recei

java网络编程客户端与服务端原理以及用URL解析HTTP协议

常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb,下面有一个文件1.html) 服务端原理 自定义一个服务端,使用自己已有的客户端IE浏览器,了解一下客户端都发送了什么请求. 1 package cn.ie_server; 2 3 import java.io.IOException; 4 import java.io.InputStream;

java网络编程(7)——利用tcp实现文件上传

其实客户端与服务端通讯的道理都是一样的,都是通过输入与输出这两个流,那么实现文件上传也就是同样的,客户端把文件读到文件流,服务端用文件流来接受,然后写到一个文件中,这样子就实现了文件上传,文件拷贝也是同样的道理~,具体看代码实现: 客户端: package com.seven.tcp; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStre

socket编程-客户端向服务器端发送某目录下的所有文件名

服务器端: import socket if __name__ == '__main__': server = socket.socket() server.bind(('127.0.0.1',9999)) server.listen() s1, raddr = server.accept() while True: data = s1.recv(1024) strdata = data.decode() if strdata == 'end': break print(strdata) #my

JAVA网络编程UDP案例

Java网络编程.UDP案例 发送端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class SendUDP { public static vo

Java网络编程——服务器端和客户端互发信息

引言 ? ? 为了学习Java网络编程,用一个QQ(屌丝版)作为例子练手,记录屌丝版QQ的开发过程,这里我们认为已经掌握其中的网络基础部分,即HTTP协议,TCP/IP协议等,在此基础上我们开始我们的Java网络部分的学习,我们要知道服务器和客户端是如何通信的,首先我们要了解Java网络知识中的一个很重要的东西--Socket ? ? Socket初探 ? ? ServerSocket和Socket ? ? 首先服务器端需要用到java.net包下的ServerSocket类,该类的一个实例用于