Java 套接字读取需要很多时间

Java 套接字读取需要很多时间,java,sockets,Java,Sockets,下面是我的客户机代码,我在这里执行套接字写和读操作。在这里,我与已经定义了协议的服务器进行交互。因此,我们向它发送代码消息并读取响应。但在以下代码中: message_id = din.readInt(); 该行运行很长时间,15分钟后返回数据。我不知道为什么要花那么多时间,请让我知道,如果有人曾经遇到过这个问题 import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException

下面是我的客户机代码,我在这里执行套接字写和读操作。在这里,我与已经定义了协议的服务器进行交互。因此,我们向它发送代码消息并读取响应。但在以下代码中:

message_id = din.readInt();
该行运行很长时间,15分钟后返回数据。我不知道为什么要花那么多时间,请让我知道,如果有人曾经遇到过这个问题

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ConnectSaS {

    public static final int REQ_SESOPEN = 128;

    /**
    * @param args
    */
    public static void main(String[] args) {
        Socket socket;

        DataOutputStream out;
        int message_id;
        int persist_session_id;
        int session_id;
        int data_length;
        String connectionString;

        try {
            socket = new Socket("infasas", 11080);
            socket.setSoTimeout(0);
            socket.setTcpNoDelay(true);
            socket.isOutputShutdown();          

            System.out.println("Connection accepted " + socket.getInetAddress()
                    + ":" + socket.getPort() + ":" + socket.getLocalPort());

            out = new DataOutputStream(socket.getOutputStream());
            out.writeInt(REQ_SESOPEN);
            out.writeInt(6);
            out.writeInt(40);
            connectionString = "sasuser sasuser SAS_Connection IS_ps7153";          
            out.write(connectionString.getBytes());

            DataInputStream din = new DataInputStream(socket.getInputStream());

            message_id = din.readInt();
            persist_session_id = din.readInt();
            data_length = din.readInt();
            din.readByte();
            System.out.println("message_id:----" + message_id);
            System.out.println("session_id:----" + persist_session_id);
            System.out.println("data_length:----" + data_length);   
        } catch (Exception e) {
            System.out.println("Problem reading back from server: " + e);
        }   
    }

}

它需要那么多的时间,因为发送方需要那么多的时间向您发送整数

调用
isOutputShutdown()
并丢弃结果完全没有意义