感谢前辈们的解答:https://bbs.csdn.net/topics/280085530

问题描述:

服务端向客户端发送数据流,服务端发完了数据不关闭流。 我在客户端读流,我无法读到-1,所以无法判断流的末尾。

有没有人指点我下,如何才能判断出流的末尾?(服务端我无法控制,我只能控制客户端)

网络流中判断末尾的解决办法:

1、先发送一个指定长度的头,头中指明正文长度,然后以该长度读取正文

2、以规定的字符或格式结束

3、关闭流或者关闭连接(如Java中关闭流后read不到后会返回-1或者null等),注意:不关流会一直read的(在timeout时间规定内)


补充:

Java中设置无限制超时方法socket.setSoTimeout(0);,0即代表了无限制;

另外,在设置无限制超时后,连接的时候可以用socket.connect(SocketAddress address,int timeout)来检测限制连接超时。注意亲自动手体会妙用。

在TCP文件传输中如何判断java流的末尾的更多相关文章

  1. 艺萌TCP文件传输及自动更新系统介绍(TCP文件传输)(四)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开源,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  2. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  3. java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

    File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...

  4. Java 简单TCP文件传输

    服务端 package TCP; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputSt ...

  5. Go语言 之TCP文件传输

    服务端实现流程大致如下: 创建监听listener,程序结束时关闭. 阻塞等待客户端连接,程序结束时关闭conn. 读取客户端发送文件名.保存fileName. 回发“ok”给客户端做应答 封装函数 ...

  6. qt+boost::asio+tcp文件传输

    客户端: void qt_boost::pbSendFileClicked(){ QString filename = ui.leFileName->text(); QByteArray ba ...

  7. Java Tcp文件传输---转载

    /** 客户端 1.服务端点 2.读取客户端已有的文件数据 3.通过socket输出流发给服务端 4.读取服务端反馈信息 5.关闭 **/ import java.io.*; import java. ...

  8. tcp协议传输中的粘包问题

    什么是粘包问题 tcp是流体协议. 其nagle算法会将数据量较小. 并且发送间隔时间较短的多个数据包合并为一个发送. 网络传输的时候是一段一段字节流的发送. 在接收方看来根本不知道字节流从何开始. ...

  9. python基础实现tcp文件传输

    准备工作,实现文件上传需要那些工具呢? socket(传输).open()(打开文件).os(读取文件信息),当然还有辅助类sys和json,下面我们开始吧 import socket,sys imp ...

随机推荐

  1. X86系统或intel RK主板上EDP转LVDS屏转接板|CS5211DP转LVDS设计

    众所周知LVDS接口是美国NS美国国家半导体公司为克服以TTL电平方式传输宽带高码率数据时功耗大,电磁干扰大等缺点而研制的一种数字视频信号传输方式.由于其采用低压和低电流驱动方式,实现了低噪声和低功耗 ...

  2. vsconde launch.json配置 调试本地文件

    { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing ...

  3. 03.python封装与解构

    封装与结构 基本概念 t1 = 1, 2 print(type(t1)) # 什么类型 t2 = (1, 2) print(type(t2)) Python等式右侧出现逗号分隔的多值的时候,就会将这几 ...

  4. python日志按天分割,保存近一个月日志,日志自动清理

    python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...

  5. linux(CentOS7) 之 克隆虚拟机并配置网络(固定ip)

    克隆机器 原机关机状态下,克隆. 下一步 选择当前状态,下一步 选择创建完整克隆,下一步 设置虚拟机名称(完成后可以修改).克隆机安装位置,下一步 等待克隆完成 克隆完成 配置网络 添加网卡(因为物理 ...

  6. Vue - 问题集、知识点

    通信:父组件 -> 子组件 父组件 <!--这里需要用v-bind来绑定data中的fontsize,否则传过去的只是一个字符串"fontsize"--> < ...

  7. Linux上天之路(五)之Linux基本命令

    1. Linux命令格式 命令 命令选项 学会看语法: {必选项}[可选项] 举例 ls -a /tmp 等价 ls –all /tmp ls 命令 -a 命令选项 简写使用- 全写-- /tmp 参 ...

  8. FIS 使用

    从淘宝npm镜像安装fis $ npm install -g fis --registry=https://registry.npm.taobao.org 安装less插件 $ npm install ...

  9. Go 中实现用户的每日限额(比如一天只能领三次福利)

    如果你写一个 bug 管理系统,用了这个 PeriodLimit 你就可以限制每个测试人员每天只能给你提一个 bug.工作是不是就轻松很多了? 如今微服务架构大行其道本质原因是因为要降低系统的整体复杂 ...

  10. 通过Javascript实现把数组里的内容以表格方式呈现到页面从

    一.把数组里的内容呈现到页面从,以表格方式 <!doctype html> <html> <head> <meta charset="utf-8&q ...