Java中Socket下载一个文本文件

废话不多说了,直接给大家贴代码了,具体代码如下所示:

package com.lanqiao.demo2;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * @author
 * @version 创建时间:2017年6月12日 上午8:47:37
 * 类说明:服务端上传一个txt类型的文件
 * 注意:服务端是一直不关闭的
 */
public class TestServer {
  // 这个路径是我电脑上的一个记事本文件
  private static final String PATH = "D:\\JavaFile_Test\\test\\网上JDK环境变量配置.txt";
  public static void main(String[] args) {
    int count = 0;
    OutputStream os = null;
    ServerSocket severscoket = null;
    Socket s1 = null;
    BufferedInputStream bis =null;
    int len=0;
    try {
      // 创建 Socket 服务
      severscoket = new ServerSocket(8888);
      while (true) {
        // 阻塞
        s1 = severscoket.accept();
        //服务端被连接的次数
        count++;
        System.out.println("---服务端开启 " + count + " 次---");
        // 服务端写入文件
        os = s1.getOutputStream();
        //创建一个BufferedInputStream对象读取我电脑上的文件
        bis = new BufferedInputStream(new FileInputStream(PATH));
        //每次写入512个字节
        byte[] b = new byte[512];
        while ((len = bis.read(b)) != -1) {
          os.write(b, 0, len);
        }
        s1.shutdownOutput();
        os.flush();
      }
    } catch (IOException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } finally {
      try {
        if (os != null)
          os.close();
      } catch (IOException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
      }
    }
  }
}
package com.lanqiao.demo2;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.Socket;
/**
 * @author
 * @version 创建时间:2017年6月12日 上午9:04:36
 * 类说明:客户端打印出从服务端下载的txt内容
 */
public class TestClient {
  public static void main(String[] args) {
    BufferedInputStream bis = null;
    Socket socket = null;
    int len=0;
    try {
      // 通过IP地址和端口号创建一个Socket对象
      socket = new Socket("127.0.0.1", 8888);
      // 客户端读取文件
      bis = new BufferedInputStream(socket.getInputStream());
      // 每次读512个字节
      byte[] b = new byte[512];
      //当读取的字节不为空 循环打印下载的内容
      while ((len = bis.read(b)) != -1) {
        System.out.println(new String(b, 0, len));
      }
    } catch (IOException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } finally {
      //关闭客户端的输入流对象 和 Socket对象
      try {
        if(bis!=null) bis.close();
        if(socket!=null) socket.close();
      } catch (IOException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
      }
    }
  }
} 

以上所述是小编给大家介绍的Java中Socket下载一个文本文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 基于socket和javaFX简单文件传输工具

    本文实例介绍了基于socket和javaFX简单文件传输工具,分享给大家供大家参考,具体内容如下 package application; import java.io.File; import org.james.component.ButtonBox; import org.james.component.FileReceiverGrid; import org.james.component.FileSenderGrid; import javafx.application.Applica

  • 浅析Java基于Socket的文件传输案例

    本文实例介绍了Java基于Socket的文件传输案例,分享给大家供大家参考,具体内容如下 1.Java代码 package com.wf.demo.socket.socketfile; import java.net.*; import java.io.*; /** * 2.socket的Util辅助类 * * @author willson * */ public class ClientSocket { private String ip; private int port; private

  • Java基于Socket的文件传输实现方法

    本文实例讲述了Java基于Socket的文件传输实现方法.分享给大家供大家参考,具体如下: 1. Java代码如下: package sterning; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.Ser

  • Java Socket实现文件传输示例代码

    最近学Socket学上瘾了,就写了一个简单的文件传输程序. 客户端设计思路:客户端与服务端建立连接,选择客户端本地文件,先将文件名及大小等属性发送给服务端,再将文件通过流的方式传输给服务端.传输的进度打印到控制台中,直到传输完成. 服务端设计思路:服务端接收客户端的请求(阻塞式),每接收到一个客户端请求连接后,就新开一个处理文件的线程,开始写入流,将文件到服务器的指定目录下,并与传输过来的文件同名. 下面是客户端和服务端的代码实现: 客户端代码: import java.io.DataOutpu

  • Java中Socket下载一个文本文件

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.lanqiao.demo2; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * @author * @

  • java中maven下载和安装步骤说明

    在使用java项目时,如果没有详细的管理和辅助流程,就会像程序失去了系统的调配一样.在java中有一种专门管理项目的工具,叫做maven,除了本身的管理功能外,还有详细的流程进行操作.本篇要为大家带来的是maven的下载方法,大家来看看这个工具的具体安装方法吧. 1.maven介绍 Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具.是专门位java项目打造的管理和构建工具. 2.特点 提

  • Java中多线程下载图片并压缩能提高效率吗

    目录 前言 实现思路 实测 前言 需求 导出Excel:本身以为是一个简单得导出,但是每行得记录文件中有一列为图片url,需要下载所有记录行对应得图片,然后压缩整个文件夹. 这里只做4.5.得代码讲解描述,其它也没什么好说得,话不多说上代码. 实现思路 多线程实现使用了线程池,Jdk1.8并发包下的CompletableFuture 第一步:得到基础数值 // 线程数 Integer threadNum = 10; // 每条线程需要处理的图片数 int dataNum = imageInfoV

  • 详谈Java中BigDecimal的一个除法异常

    如下所示: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 说明遇到除不尽的情况了,需要指定商的小数精度和舍入模式. 比如: a=b.divide(c,2,RoundingMode.HALF_UP); 以上这篇详谈Java中BigDecimal的一个除法异常就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • java使用socket实现一个多线程web服务器的方法

    除了服务器类,还包括请求类和响应类 请求类:获取客户的HTTP请求,分析客户所需要的文件 响应类:获得用户请求后将用户需要的文件读出,添加上HTTP应答头.发送给客户端. 服务器处理类 package com.lp.app.webserver; import java.io.*; import java.net.*; //使用Socket创建一个WEB服务器,本程序是多线程系统以提高反应速度. class WebServer { public static String WEBROOT = "&

  • java基于Socket做一个简单下载器

    本文实例为大家分享了java基于Socket制作下载器的过程,及相关代码,供大家参考,具体内容如下 1.首先要建立一个服务器用来处理信息并给客户端传输文件(电脑)  我是用电脑开了一个WIFI,手机连上后使用scoket传输的  SERVERIP要根据自己实际情况更改.端口也可以随便更改0~65535,尽量选大一点 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Buf

  • 解决Java中socket使用getInputStream()阻塞问题

    目录 socket使用getInputStream()阻塞 用线程解决Socket的getInputStream阻塞 1.背景 2.问题 3.原因 4.解决办法 5.Socket通信注意事项 socket使用getInputStream()阻塞 今天用socket进行编程练习时,发现程序到了getInputStream()这里就进行不下去了 Socket socket = new Socket("127.0.0.1", 800); ObjectInputStream reader =

  • Java中Socket用法详解

    目录 1 问题引入 1.1 网络架构模型 1.1.1 OSI参考模型 1.1.2 TCP/IP五层模型 1.1.3 各协议层的说明 1.2 网络编程中的问题 1.3 TCP协议与UDP协议 1.3.1 TCP 1.3.2 UDP 1.3.3 TCP和UDP的区别 2 socket网络编程 2.1什么是socket? 2.2 Socket的原理 3 基于java的socket网络编程实现 3.2 基于UDP的socket实现 1 问题引入 1.1 网络架构模型 网络架构模型主要有OSI参考模型和T

  • Java中Socket设置连接超时的代码分享

    前言 大家都知道Java的Socket如果连接不到指定IP和Port的主机,就会抛出IOException异常,而通常情况下,从连接到出现IOException会有一段不定的时长,就是所谓的超时时长,如果超时时长过长,在开发时会影响测试,如果代码成了产品,又会非常的影响用户体验,那么要怎么设置这个时长呢?下面来一起看看详细的介绍: Socket的类提供了一个方法: public void connect(SocketAddress endpoint, int timeout) throws IO

  • 在java中如何定义一个抽象属性示例详解

    前言 本文主要给大家介绍的是在java中定义一个抽象属性的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给子类.由于Java不支持抽象属性,如果你试图将类属性标记为抽象,将会得到一个编译时错误. 在本教程中,我们将介绍两种定义抽象属性的方法,这些抽象属性可以由子类进行设置,而且不使用Abstract 关键字. 实用案例 假设我们想要实现一个记录事务的日志模块,用来记录特定事务的信息.我们希望这个模块是抽

随机推荐