0
からデータを取得、私はこのSwingWorkerのソケット
try {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(888);
} catch (IOException e) {}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {}
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
while ((inputLine = in.readLine()) != null) {
outputLine = "SRV:>"+inputLine+"<:VRS";
out.println(outputLine);
taWyjscie.append(outputLine+"\n");
if (inputLine.equals("Bye."))
break;
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
} catch (IOException ex) {
taWyjscie.append("Błąd I/O: "+ex.getLocalizedMessage() + "\n");
}
のようなコードを持っているがそれは動作しますが、クライアントが送信するまで、アプリは使用できなくなり、「さようなら」を。
は、私はSwingWorkerので、GUIにより、サーバからクライアントにそうイム戦いメッセージを送信できるようにしたい、私はこれを得た:
今try {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(888);
} catch (IOException e) {}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {}
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
zadanie = new ServerTask(in);
} catch (IOException ex) {
taWyjscie.append("Błąd I/O: "+ex.getLocalizedMessage() + "\n");
}
private class ServerTask extends SwingWorker<String, String> {
private BufferedReader iin;
public ServerTask(BufferedReader win) {
this.iin = win;
}
@Override
protected String doInBackground() throws Exception {
String input;
while ((input = iin.readLine()) != null) {
System.out.println(input);
publish(input);
if (isCancelled())
break;
}
return null;
}
@Override
protected void process(List<String> chunks) {
for(String el : chunks) {
textAreaOUT.append(el+"\n");
}
}
}
私は、サーバからクライアントにメッセージを送信しますが、カントクライアントからのメッセージtextAreaには表示されません。午前から私と戦っている私はスイングワーカーがどのように働いているのかアイデアを得る...
PS。この試みは...前にキャッチするボタンの機能は(differeceを作る場合)