私はネットワークプログラミングを初めて利用し、チャットクライアントを作成しました。ほとんどの場合動作しますが、if節を追加すると、サーバが実際に何かを送信しても、in.hasnext
はfalseを返します。if節の後にコードが動作しない
@Override
public void run() {
while(!server.isClosed()){
if(ChatClient.WriteListener.message!=null){
String m = ChatClient.WriteListener.message;
out.println(m);
ChatClient.WriteListener.message = null;
}
if(in.hasNext()){
System.out.println("hab");
String message = in.next();
textPane.setText(textPane.getText()+"\n"+message.replaceAll("_", " "));
}
out.flush();
}
System.out.println("closed");
}
内と外の創造
public void run() {
while(!server.isClosed()){
out.println(ChatClient.WriteListener.message);
if(in.hasNext()){
System.out.println("hab");
String message = in.next();
textPane.setText(textPane.getText()+"\n"+message.replaceAll("_", " "));
}
}
System.out.println("closed");
}
句がなければ、:if節で
public UserThread(Socket s){
server = s;
try {
out = new PrintWriter(server.getOutputStream(), true);
in = new Scanner(server.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
WriteListener
public static class WriteListener implements ActionListener {
JTextField text;
static String message;
public WriteListener(JTextField jtf){
text = jtf;
}
public void actionPerformed(ActionEvent ev) {
message = text.getText();
}
}
'ChatClient.WriteListener.message = NULL;'なぜあなたはこれをしましたか? – Zircon
'in'とは何ですか?どのように作成されますか? –
'in'と' out'の作成のためのコードを追加してください – Sanjeev