私は以下のクラスを持っている:のreadUTFで立ち往生スレッド()
public void run() {
while(true) {
try {
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
prices.setPriceValues(in.readUTF());
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("Thank you for connecting to " + server.getLocalSocketAddress()
+ "\nGoodbye!");
//server.close();
}catch(SocketTimeoutException s) {
System.out.println("Socket timed out!");
break;
}catch(IOException e) {
e.printStackTrace();
break;
}
}
}
すべてがうまく動作しますが、私は私が何を格納したい:
public class Prices {
String priceValues;
public String getPriceValues() {
return priceValues;
}
public void setPriceValues(String priceValues) {
this.priceValues = priceValues;
}
}
これはSocketServer
クラスの私のrun
方法であり、任意のクラスによってアクセス可能なようにクライアントから受信する。そこで私はPrices
というクラスを作成しました。
しかし、スレッドが次の行に貼り付けます:
prices.setPriceValues(in.readUTF());
prices
変数がnullではない、と私は、この行を取り出したときにすべてがうまく動作します。
ループのたびに 'DataInputStream'を再作成しないでください。ループの前に作成します。 – EJP