java对象流

标签 java sockets dataoutputstream

我正在尝试用 java 创建一个服务器,它将同时维护最多 4 个连接。我认为将相关信息保存在数组中可以满足我的目的,但是我遇到了一些麻烦。

这是我创建的类:


import java.net.*;
import java.io.*;
public class tcpConnects{
private ObjectInputStream input;
private ObjectOutputStream output;
private int player;
public tcpConnects(int playerNumber, Socket connect) {
    // TODO Auto-generated method stub
        try{
            System.out.println("create InputStream");
            input= new ObjectInputStream(connect.getInputStream());
            System.out.println("create OutputStream");
            output= new ObjectOutputStream(connect.getOutputStream());
            System.out.println("streams created");
            //sendData("Welcome!");
            player=playerNumber;
        }catch (IOException ioException){
            ioException.printStackTrace();
        }
    }
    public ObjectInputStream getInput(){
        return input;
    }
    public void setInput(ObjectInputStream in){
        input=in;
    }
    public ObjectOutputStream getOutput(){
        return output;
    }
    public void setOutput(ObjectOutputStream out){
        output=out;
    }
    public int getPlayer(){
        return player;
    }
    public void sendData(String data){
        try{
            output.writeObject(data);
            output.flush();
        }catch (IOException ioException){
            ioException.printStackTrace();
        }
    }
}
无论如何,当我将套接字发送到类中时,它会进入创建输入流的阶段,但实际上从未创建流。语法似乎是正确的,所以我只能假设存在某种我不知道的逻辑错误。任何有助于解释为什么此类不会创建输入或输出流的帮助都将不胜感激。

谢谢

最佳答案

ObjectInputStream之前在两端创建ObjectOutputStreamObjectOutputStream 的构造函数将 header 写入到 ObjectInputStream 的构造函数读取的流中,因此,如果您先创建 ObjectInputStreams,则会出现死锁。

关于java对象流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4310516/

相关文章:

java - Java 中可序列化的工作

java - 在元素顶部添加 DividerItemDecoration

java - 如何在android中对JSONArray进行排序

Android:BluetoothSocket readLine 超时

sockets - 通过 Udp 套接字的 Python 网络摄像头流

java - 使用数据输入流和数据输出流

java - 在 Java 中将 .dat 文件读入数组

java - 从 Eclipse 中的 Debug 视角激活 Java 视角

C# 在新创建的套接字上丢弃 UDP 数据包

java - TCP 套接字连接 Java Client<-> c++ 服务器中的意外行为