Java socket BufferedReader一次读取循环中的所有输入
我有一个简单的服务器客户端应用程序。客户机可以向服务器发送一个选项来读取生成的数据Java socket BufferedReader一次读取循环中的所有输入,java,swing,sockets,client,server,Java,Swing,Sockets,Client,Server,我有一个简单的服务器客户端应用程序。客户机可以向服务器发送一个选项来读取生成的数据 void getManyFromServer(int numberOfGets){ try{ for(int i=0;i<numberOfGets;i++){ fromServer = sockIn.readLine(); fromServer+="\n";
void getManyFromServer(int numberOfGets){
try{
for(int i=0;i<numberOfGets;i++){
fromServer = sockIn.readLine();
fromServer+="\n";
textArea.append(fromServer);
}
} catch(IOException exc){
/*...*/
}
}
void getManyFromServer(int numberofget){
试一试{
对于(int i=0;i从客户端打印出一个println,您可能会看到它并不是一次读取所有内容。相反,您可能会通过在Swing事件线程上执行此读取操作冻结GUI,从而阻止它将文本写入文本组件。解决方案:使用后台线程(如SwingWorker)执行读取操作请阅读更多关于这方面的内容
e、 g
private void getManyFromServer2(最终int numberofget){
新SwingWorker(){
@凌驾
受保护的Void doInBackground()引发异常{
试一试{
for(int i=0;i
从客户端打印一个println,您可能会看到它并不是一次读取所有内容。相反,您可能会通过在Swing事件线程上执行此读取操作冻结GUI,从而阻止它将文本写入文本组件。解决方案:使用后台线程(如SwingWorker)来执行读取操作。请阅读更多有关此的信息
e、 g
private void getManyFromServer2(最终int numberofget){
新SwingWorker(){
@凌驾
受保护的Void doInBackground()引发异常{
试一试{
for(int i=0;i
Random randomGenerator = new Random();
double MEAN = 4.0f;
double VARIANCE = 0.01f;
for(int i=0;i<10;i++){
out.println(Double.toString(MEAN + randomGenerator.nextGaussian()* VARIANCE));
try{
Thread.sleep(3000);
} catch(InterruptedException e){
/*...*/
}
private void getManyFromServer2(final int numberOfGets) {
new SwingWorker<Void, String>() {
@Override
protected Void doInBackground() throws Exception {
try {
for (int i = 0; i < numberOfGets; i++) {
fromServer = sockIn.readLine();
fromServer += "\n";
// textArea.append(fromServer);
publish(fromServer);
}
} catch (IOException exc) {
exc.printStackTrace();
}
return null;
}
@Override
protected void process(List<String> chunks) {
for (String line : chunks) {
textArea.append(line);
}
}
@Override
protected void done() {
try {
get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}.execute();
}