您的位置:首页 > 理论基础 > 计算机网络

Java基于多线程的网络通信实现服务器计算正方形面积

2017-04-04 13:16 846 查看
服务器端

public class Client {

/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws IOException{
//获得服务器端套接口
Socket serverSocket=new Socket("127.0.0.1",6666);
//通过Scanner获取键盘输入
Scanner keyInput=new Scanner(System.in);
System.out.println("Input side:");
//按行读取键盘输入
String strLine=keyInput.nextLine();
try {
//获得服务器输入流
OutputStream output=serverSocket.getOutputStream();
//获得服务器输出流
InputStream input=serverSocket.getInputStream();
PrintWriter printWriter=new PrintWriter(output,true);
printWriter.println(strLine);
BufferedReader bufReader=new BufferedReader(new InputStreamReader(input));
System.out.println(bufReader.readLine());
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}


服务线程

public class ServerThread extends Thread{
//客户端套接端口
private Socket clientSocket;
//客户端输入流
private InputStream clientInput;
//客户端输出流
private OutputStream clientOutput;

/**
*
* @param socket
* @throws IOException
*/
public ServerThread(Socket socket)throws IOException{
this.clientSocket=socket;
this.clientInput=clientSocket.getInputStream();
this.clientOutput=clientSocket.getOutputStream();
this.start();
}

public void run(){
try {
//构造输入流缓存
BufferedReader bufReader=new BufferedReader(new InputStreamReader(clientInput));
//按行读取输入内容
String strLine=bufReader.readLine();

if("OVER".equalsIgnoreCase(strLine)){
//结束输入流
PrintWriter printWriter=new PrintWriter(clientOutput,true);
printWriter.println("OVER");
}else{
//输入正方形边长,并输出其边长和面积
double side=Double.parseDouble(strLine);
System.out.println("Side of Square Received : "+side);
double squareArea=side*side;
String str="Side: "+side+"  Square:"+squareArea;
PrintWriter printWriter=new PrintWriter(clientOutput,true);
printWriter.println(str);
System.out.println("Finish sending to client!");
}
clientInput.close();
clientOutput.close();
clientSocket.close();
} catch (Exception e) {
e.printStackTrace();
}{

}
}

}


客户端

public class Client {

/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws IOException{
//获得服务器端套接口
Socket serverSocket=new Socket("127.0.0.1",6666);
//通过Scanner获取键盘输入
Scanner keyInput=new Scanner(System.in);
System.out.println("Input side:");
//按行读取键盘输入
String strLine=keyInput.nextLine();
try {
//获得服务器输入流
OutputStream output=serverSocket.getOutputStream();
//获得服务器输出流
InputStream input=serverSocket.getInputStream();
PrintWriter printWriter=new PrintWriter(output,true);
printWriter.println(strLine);
BufferedReader bufReader=new BufferedReader(new InputStreamReader(input));
System.out.println(bufReader.readLine());
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}


先启动服务器端,再启动客户端,输入正方形边长后,服务器计算面积并返回客户端

启动服务器



启动客户端并输出边长得到结果



接收到边长后服务器显示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: