JAVA outputStream什么也没写outputStream.close没有帮助

问题描述

我连接到wifi,并使用套接字发送数据。这是一台服务器,它可以通过inputStream正确获取数据。但是outputStream无法发送回数据。我添加outputStream.close();但仍然无法正常工作。

线程创建ServerSocket之后,它将调用套接字线程以进行输入输出

public class SocketThread {
    Socket socket ;
    private InputStream inputStream;
    private OutputStream outputStream;
    private String resultJSON ;
    public SocketThread( Socket socket ){ // construct
        this.socket = socket ;
        try {
            inputStream = socket.getInputStream();
            outputStream = socket.getoutputStream();
        } catch (IOException e){
            e.printstacktrace();
        }
    }

    //@Override
    public void run() { // any message from client
        byte[] buffer = new byte[1024];
        int bytes;
        try {
            bytes = inputStream.read(buffer);
            resultJSON = new String(buffer,bytes);
            System.out.println("GET : "+ resultJSON);
            write(buffer,bytes);
        } catch (IOException e) {
            e.printstacktrace();
        }
    }

    private void write(byte[] buffer,int bytes){ 
        try {
            outputStream.write(buffer);
            outputStream.close();
            System.out.println("WRITE : "+new String(buffer,bytes));
        } catch (IOException e) {
            e.printstacktrace();
        }
    }

    public void cancel() { // after connect,we need to close the socket
        try {
            socket.close();
        } catch (IOException e) {
            System.out.println("cancel is wrong");
            e.printstacktrace();
        }
    }
}

// ============================================= =========

Thread thread = new Thread() {
    private ServerSocket serverSocket;
    private SocketThread socketThread;
    private String resultJSON;

    @Override
    public void run() {
        try {
            serverSocket = new ServerSocket(); // create a server
            serverSocket.bind(new InetSocketAddress("10.10.100.35",8000)); 
            while (true){
                System.out.println("wait"); 
                Socket socket = serverSocket.accept(); // wait call
                System.out.println("OK"); 
                connected(socket); // if called,connect it
                socketThread.cancel();
            }
        } catch (IOException e) {
            e.printstacktrace();
        }
    }

    private void connected(Socket socket) {
        if (socketThread != null) { // clear socketThread first
            socketThread.cancel();
            socketThread = null;
        }

        socketThread = new SocketThread(socket); // new a Thread
        socketThread.run(); // go
    }
};

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)