socket的ObjectInputStream的问题

weixin_44555034 2021-04-22 09:31:55
java.io.StreamCorruptedException: invalid stream header: ACED7372
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:936)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:394)
at Common.myruns.run(Server.java:59)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
java.io.StreamCorruptedException: invalid stream header: 00050009
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:936)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:394)
at Common.myruns.run(Server.java:59)
at java.lang.Thread.run(Thread.java:748)


萌新求救
socket通信中new objectInputStream 抛了这个异常 。。
求解惑。orz
...全文
140 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44555034 2021-04-25
  • 打赏
  • 举报
回复
单纯就是线程池的问题,但是又想用线程池,不知道接下来该怎么做。
用JAVA语言实现网络聊天import java.io.*; import java.net.*; import java.util.*; public class ChatHandler implements Runnable { protected Socket socket; protected ObjectInputStream dataIn; protected ObjectOutputStream dataOut; protected Thread listener; protected static Vector handlers = new Vector(); private boolean keepListening = true; public ChatHandler(Socket socket) { this.socket = socket; } public synchronized void start() { if (listener == null) { try { dataIn = new ObjectInputStream(socket.getInputStream()); dataOut = new ObjectOutputStream(socket.getOutputStream()); listener = new Thread(this); listener.start(); } catch (IOException ioException) { ioException.printStackTrace(); } } } public synchronized void stop() { if (listener != null) { try { if (listener != Thread.currentThread()) listener.interrupt(); listener = null; dataOut.close(); socket.close(); } catch (IOException ignored) { } } } public void run() { String message = ""; try { handlers.addElement(this); while (keepListening) { message = (String) dataIn.readObject(); if (message.equals("DISCONNECT")) { dataOut.writeObject(message); dataOut.flush(); stopListening(); } else broadcast(message); } } catch (ClassNotFoundException classNotFoundException) { } catch (EOFException ignored) { } catch (IOException ex) { if (listener == Thread.currentThread()) ex.printStackTrace(); } finally { handlers.removeElement(this); } try { dataIn.close(); } catch (IOException ioException) { ioException.printStackTrace(); } stop(); } protected void broadcast(String message) { synchronized (handlers) { Enumeration enumer = handlers.elements(); while (enumer.hasMoreElements()) { ChatHandler handler = (ChatHandler) enumer.nextElement(); try { handler.dataOut.writeObject(message); handler.dataOut.flush(); } catch (IOException ex) { handler.stop(); } } } } public void stopListening() { keepListening = false; } }

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧