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()
并丢弃结果完全没有意义