我有一种方法,它接收IP,接收数据并将其存储在List中。在方法结束时,它返回此List。但是,调用此方法时,列表为空。我认为这是一个非常简单的解决方案,这是我愚蠢但是有人能指出我哪里出错了所以我不再这样做了吗?
public List<String> receiveDataFromOperator(){
List<String> dataRec = new ArrayList<String>();
try
{
System.out.println("Client Program");
//Hard coded IP Address
String ip = "146.176.226.147";
//Hard coded port
int port = 500;
// Connect to the server
Socket sock = new Socket(ip, port);
// Create the incoming stream to read messages from
DataInputStream network = new DataInputStream(sock.getInputStream());
// Display our address
System.out.println("Address: " + sock.getInetAddress());
String line;
// Loop until the connection closes, reading from the network
while ((line = network.readUTF()) != null)
{
dataRec.add(line);
}
sock.close();
}
catch (IOException ioe)
{
//Test output for the arraylist size
System.out.println(dataRec.size());
for(int i = 0; i<dataRec.size(); i++){
System.out.println("Line " + i + dataRec.get(i) + "\n");
}
}// End of catch
return dataRec;
}//End of method
答案 0 :(得分:3)
如果服务器正在用DataOutputStream.writeUTF()
编写二进制数据,它应该可以正常工作。
如果要从服务器发送 text ,则需要使用BufferedReader.readLine()
从套接字中读取文本。
BTW:当你得到一个IOException时,你通常不应该忽略它,并假装它没有发生esp。当程序没有按预期运行时。