サーバーに接続してメッセージを送信するクライアントを構築中です。私はその部分がダウンしている、サーバーがメッセージを取得しているが、私の問題は、クライアントがサーバーからのメッセージを聞くことです。基本的にはチャットルームのようなもので、サーバーにメッセージを送信する必要があります。また、クライアントはサーバーからメッセージを受信し、サーバーから送信されたメッセージを印刷する必要があります。スレッドとソケットを使用してサーバーの応答を取得する
私はサーバーを構築していないか、サーバーコードにアクセスできませんでしたが、サーバーが動作していることはわかります。私はクライアントのために何を持っているのですか?SendThreadは正常に動作していますが、GetThreadを追加すると送信スレッドは機能しなくなり、2スレッド、1リスン、1送信ができなくなります。
Client.java
public class Client {
public static void main(String[] args) throws IOException {
// String name = args[0];
String name = "Brandon";
Socket socket = new Socket("localhost", 4688);
Thread sendThread = new SendThread(socket, name);
Thread getThread = new GetThread(socket);
sendThread.start();
getThread.start();
}
}
SendThread.java
public class SendThread extends Thread {
Socket socket;
String name;
SendThread(Socket s, String n) {
socket = s;
this.name = n;
}
public void run(){
try{
String message;
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.println("connect Brandon");
BufferedReader bufferedReaderFromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(bufferedReaderFromClient.readLine());
BufferedReader bufferedReader = new java.io.BufferedReader(new InputStreamReader(System.in));
while(true) {
String readerInput = bufferedReader.readLine();
printWriter.println(name + ": " + readerInput);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
GetThread.java
public class GetThread extends Thread {
Socket socket;
GetThread(Socket s) {
socket = s;
}
public void run(){
try{
String message;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while((message = bufferedReader.readLine()) != null) {
System.out.println("Incoming: " + message);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
を –
どこかときに、各スレッドがスタックになるん..私はちょうど両方のスレッドがアクティブに取得することはできません? – acelent
ソケットとスレッドについて読むhttp://www.oracle.com/technetwork/java/socket-140484.html#multi –