package lianxi;
import java.io.*;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.*;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.*;
import java.net.*;
import java.util.*;
public class Client extends Application{
public static void main(String[] args) {
launch(args);
}
DataOutputStream tosever= null;
DataInputStream fromsever = null;
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane paneForTextField = new BorderPane();
paneForTextField.setPadding(new Insets(5,5,5,5));
paneForTextField.setStyle("-fx-border-color:green");
paneForTextField.setLeft(new Label("Enter a radius:"));
TextField tf = new TextField();
tf.setAlignment(Pos.BASELINE_RIGHT);
paneForTextField.setCenter(tf);
BorderPane mainPane = new BorderPane();
TextArea ta = new TextArea();
mainPane.setCenter(new ScrollPane(ta));
mainPane.setTop(paneForTextField);
Scene scene = new Scene(mainPane,450,200);
primaryStage.setScene(scene);
primaryStage.setTitle("Client");
primaryStage.show();
tf.setOnAction(e->{
try{
double radius = Double.parseDouble(tf.getText().trim());
tosever.writeDouble(radius);
tosever.flush();
double area = fromsever.readDouble();
ta.appendText("Radius is " + radius + '\n');
ta.appendText("Area received from the sever is "
+ area + '\n');
}
catch(IOException ex){
System.err.println(ex);
}
});
try{
Socket socket = new Socket("localhost",8001);
fromsever = new DataInputStream(socket.getInputStream());
tosever = new DataOutputStream(socket.getOutputStream());
}catch(IOException ex){
ta.appendText(ex.toString() + '\n');
}
}
}
package lianxi;
import java.io.*;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.*;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.stage.*;
import java.net.*;
import java.util.*;
public class Sever extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
TextArea ta = new TextArea();
Scene scene = new Scene(new ScrollPane(ta),450,450);
primaryStage.setTitle("Server");
primaryStage.setScene(scene);
primaryStage.show();
new Thread(()->{
try{
ServerSocket serverSocket = new ServerSocket(8001);
Platform.runLater(()->
ta.appendText("Sever atarted at" + new Date() +'\n'));
Socket socket = serverSocket.accept();
DataInputStream inputFromClient = new DataInputStream(
socket.getInputStream());
DataOutputStream outputToClient = new DataOutputStream(
socket.getOutputStream());
while(true){
double radius = inputFromClient.readDouble();
double area = radius * radius * Math.PI;
outputToClient.writeDouble(area);
Platform.runLater(()->{
ta.appendText("Radius received from client:"
+ radius +'\n');
ta.appendText("Area is" + area + '\n');
});
}
}
catch(IOException ex){
ex.printStackTrace();
}
}).start();
}
}
第一个是客户端,第二个是服务器。运行结果如下