liuzhen6835 2015-07-16 01:39 采纳率: 51.2%
浏览 3059

Java中的Socket编程关于多次输入输出的问题,希望给出解决方法

实现了多线程,这是服务端的代码:需求是接受客户端发送的数字,根据数字选择相应的case,当是1的时候要向服务端发送一个user的对象,ObjectInputStream ois=new ObjectInputStream(s.getInputStream());这句话的异常是java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281),

public void run()
    {
        ObjectOutputStream oos=null;
        int choice=0;
        try
            {
                InputStream is=s.getInputStream();
                choice=is.read();
                System.out.println("接受成功"+choice);
            } catch (IOException e1)
            {
                e1.printStackTrace();
            }
        switch (choice)
        {
            case 1:
                try
                  {
                      System.out.println("进入登录验证");
                      ObjectInputStream ois=new ObjectInputStream(s.getInputStream());_**
                        /* ObjectInputStream ois=new ObjectInputStream(s.getInputStream());这句话的异常是java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281),所以我就找到readFully(ObjectInputStream.java:2281)他的解释是
    void readFully(byte[] b, int off, int len) throws IOException {
        int n = 0;
        while (n < len) {
        int count = read(b, off + n, len - n);
        if (count < 0) {
            throw new EOFException();
        }
        n += count;
        }
    }_**
                */      
                      Object obj=ois.readObject();
                        OutputStream os=s.getOutputStream();
                        if(obj instanceof User)
                            {
                                User user=(User)obj;
                                String job=login(user);
                                os.write(job.getBytes());
                            }
                            os.close();
                            ois.close();
                     }
                    catch (Exception e1)
                        {
                            e1.printStackTrace();
                        } 
  • 写回答

2条回答

  • yuke198907 2015-07-16 05:37
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器