任务详情
结对编程:1人负责客户端,一人负责服务器
0. 注意责任归宿,要会通过测试证明自己没有问题
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
- 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 上传测试结果截图和码云链接
我完成的是服务器部分
运行截图(服务器部分)
客户端部分的截图在我的结对搭档的博客里面
代码
Server_2.java
import java.io.*;
import java.net.*;
import java.util.*;
public class Server_2 {
public static void main(String[] args) {
final int port=5353;
ServerSocket Server_2forClient_2=null;
Socket SocketOnServer_2=null;
DataOutputStream Server_2out=null;
DataInputStream Server_2in=null;
try {
Server_2forClient_2=new ServerSocket(port);
}
catch (IOException e1) {
System.out.println(e1);
//e1.printStackTrace();
}
try {
System.out.println("等待客户端呼叫……");
SocketOnServer_2=Server_2forClient_2.accept();
Server_2out=new DataOutputStream(SocketOnServer_2.getOutputStream());
Server_2in=new DataInputStream(SocketOnServer_2.getInputStream());
String s=Server_2in.readUTF();
System.out.println("服务器接收到表达式:"+s);
String expr;
int result;
MyBC mybc=new MyBC();
mybc.setExpression(s);
expr=mybc.changedWay();
result=mybc.evaluate(expr);
Server_2out.writeUTF("中缀表达式“"+s+"”转后缀表达式“"+expr+",运算结果为:"+result);
//Thread.sleep(500);
}
catch (Exception e2) {
System.out.println("客户端已断开"+e2);
}
}
}
Client_2.java
import java.io.*;
import java.net.*;
import java.util.*;
public class Client_2 {
public static void main(String[] args) {
final int port=5353;
final String host="172.30.4.50";
Socket Client_2Socket;
DataInputStream Client_2in=null;
DataOutputStream Client_2out=null;
String expr;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入表达式:");
expr=scanner.nextLine();
try {
Client_2Socket=new Socket(host,port);
Client_2in=new DataInputStream(Client_2Socket.getInputStream());
Client_2out=new DataOutputStream(Client_2Socket.getOutputStream());
Client_2out.writeUTF(expr);
String s=Client_2in.readUTF();
System.out.println("服务器回复:
"+s);
}
catch (Exception e) {
System.out.println("服务器已断开"+e);
}
}
}