在编写socket通信时,服务端使用了DataInputStream.readUTF()读取字节流时,出现EOFEXCEPTION

原因是客户端没有使用DataOutputStream.writeUTF()来传输数据流,而是使用OutputStream.write()方法写入字节数组。

导致服务端接收到的字节流的头两个字节没有指明字节流的长度。解决办法之一是:

使用OutputStream.write(byte[] b)时;需要先写入两个字节代表字节流长度

        OutputStream out = socket.getOutputStream();
String str = "北京码农_DataInputStream"; // 先发送无符号数
int length = str.length();
byte[] b = new byte[2];
b[0] = (byte) (length>>8);
b[1] = (byte) length ;
out.write(b); // 再发送字节数组
out.write(str.getBytes());
out.write(new byte[]{(byte)(15<<4)}); out.flush();

另外,复习下java平台基本数据类型长度的知识:

byte 1字节 char 2字节 short 2字节  int 4字节  float 4字节  long 8字节

DataInputStream EOFEXCEPTION的更多相关文章

  1. socket编程报异常java.io.EOFException

    一个客户端连接服务器的小程序,服务器端可以正常读取客户端发来的数据 但是当客户端关闭时,服务端也关闭了,并且抛出如下的异常: java.io.EOFException at java.io.DataI ...

  2. java io系列14之 DataInputStream(数据输入流)的认知、源码和示例

    本章介绍DataInputStream.我们先对DataInputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:http://www.cnblogs. ...

  3. Java Scoket之java.io.EOFException解决方案

    Java Scoket之java.io.EOFException解决方案   Socket接收数据的时候,常常会抛出java.io.EOFException异常,也没有明确的原因和提示,在网上搜搜,很 ...

  4. Java之IO(四)DataInputStream和DataOutputStream

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6986155.html 1.前言 DataInputStream和DataOutputStream分别继承了Fil ...

  5. 解决异常断电导致的: CorruptSSTableException: java.io.EOFException

    问题产生 服务器重启,导致cassandra损坏,整个集群不可用.所使用的cassandra为2.1.9版本. 问题描述 运行启动命令,报错如下: DEBUG :: All segments have ...

  6. Android学习--自己在使用HttpConnection时遇到的EOFException

    在学习第一行代码第14章酷欧天气的时候,HttpUtil类中的sendHttpRequest方法发出请求,然后返回响应信息,但是出现了EOFException异常,代码如下: HttpURLConne ...

  7. 严重: Exception loading sessions from persistent storage Java.io.EOFException

    tomcat启动时报此异常,但web页均能正常运行:对程序影响不大. /*具体原因时tomcat--work--(你当前运行的工程名)--session.ser*/删除即可解决 分析: EOFExce ...

  8. java.io.EOFException

    错误代码如下: 严重: IOException while loading persisted sessions: java.io.EOFException java.io.EOFException ...

  9. socket通信之eofexception

    方案一: 用read()将不会抛出异常.因为read是block方式的. readInt()抛出异常的原因(我遇到的)是对方在该端口没有消息发送. 方案二: socket的端口被阻塞了 ,也就是我们需 ...

随机推荐

  1. 【javaFX学习】(二) 面板手册--1

    找了好几个资料,没找到自己想要的,自己写个列表吧,方便以后用的时候挑选,边学边记.以学习笔记为主,所以会写的会偏个人记忆性.非教程,有什么问题一起讨论啊. 各个不同的控件放入不同的面板中有不同的效果, ...

  2. nginx启动脚本,手动编辑

    nginx启动脚本,手动编辑 #! /bin/bash # chkconfig: - # description: nginx service XDIR=/www/server/nginx DESC= ...

  3. mysql主从复制笔记

    一:测试环境介绍 主从复制测试环境是ubuntu+mysql5.7,master服务器ip是192.168.71.135,slave服务器ip是192.168.71.137,ubuntu环境是从一台已 ...

  4. CDH升级

    升级主要分为两部分1.CM的升级.2.CDH的升级 CM的升级 两种升级方法 1.使用package 2.使用Tarballs升级方法,参照官方升级指引,Tarball中包含了Cloudera Man ...

  5. mysql中 union是什么鬼

    在sql注意时,经常会用到一个不怎么常用的联合查询 http://www.php20.com/forum.php?m ... &extra=page%3D1 清空表.从新执行一下以上链接中的s ...

  6. onblur

    HTML onblur 事件属性 HTML 事件属性 实例 当用户离开输入字段时对其进行验证: <input type="text" name="fname&quo ...

  7. 网页设计——7.css的入门

    css的介绍 div+css的设计: 什么是div? 理解示意图: 实例操作: 这里就要用到div+css的布局操作 先写一个html文件,见下图: <html><head>& ...

  8. 团队合作-如何避免JS冲突

    解决JS冲突的演化过程 1.用匿名函数将脚本包裹起来,可以有效控制全局变量,避免冲突隐患 (function(){})(): 2.定义一个全局作用域的变量str,可以帮助我们在不同匿名函数间通信 严格 ...

  9. spring boot + mybatis + hikaricp + swagger2 + jasypt

    好久没写博客了记录下写过的东西,别到时候又忘了 文章前提:前面开发项目的时候数据池一直用的阿里的druid,这个数据池吧也不能说它不好,为什么现在想改成hikaricp数据池呢,完全是实用项目需要.d ...

  10. CS Round#50 D min-races

    Min Races Time limit: 1000 msMemory limit: 256 MB   In a racing championship there are N racing driv ...