客户端代码实现
import java.io.*;
import java.net.*;
import java.util.Scanner;
/*
(1) 已知client端,提交计算表达式请求,如:3+4
(2)在server服务器端完成运算并将结果返回给client端
(3)使用TCP/IP的套接字编程完成程序
(4)能反复运算
*/
public class Client {
public static void main(String args[]) {
Scanner s=new Scanner(System.in);
// 创建键盘接收器对象
int mess1= 0;
char me=0;
int mess2=0;
Socket mysocket;
// Socket类实现客户端套接字
DataInputStream in=null;
// 读取服务器的回答的io流
DataOutputStream out=null;
// 向服务器提问的io流
try {
mysocket=new Socket("127.0.0.1",2010);
// 端口号是服务器端与客户端链接的通路标志,通过端口号与服务器建立连接
in=new DataInputStream(mysocket.getInputStream());
// 注意DataInputStream的创建
out=new DataOutputStream(mysocket.getOutputStream());
// 注意DataOutputStream的创建
while(true) {
System.out.println("请输入您要计算的式子:");
mess1=s.nextInt();
me=(char)s.next().charAt(0);
mess2=s.nextInt();
out.writeInt(mess1);
out.writeChar(me);
out.writeInt(mess2);
int answer=in.readInt();
// 读取信息,堵塞状态
System.out.println("客户收到服务的回答:"+answer);
}
}catch(Exception e) {
System.out.println("服务器已断开"+e);
};
}
}
服务器端代码实现
import java.io.*;
import java.net.*;
//当用到网络编程时要导java.net.*;包
public class Server {
public static void main(String args[]) {
int answer=0;
ServerSocket serverForClient=null;
// ServerSocket类实现服务器套接字(只有一个用处好像,即申请服务器端口号)
Socket socketOnServer=null;
// Socket类实现客户端套接字
DataOutputStream out=null;
DataInputStream in=null;
try {
serverForClient =new ServerSocket(2010);
// 端口号是服务器端与客户端链接的通路标志,设置服务器端口号
}catch(IOException e) {
//如果端口号已经被占用,将触发异常
System.out.println(e);
}
try {
System.out.println("等待客户呼叫");
socketOnServer=serverForClient.accept();
// 堵塞状态——等待客户端访问,获得客户端地址
System.out.println("客户的地址:"+socketOnServer.getInetAddress());
// 输出客户端的地址
out=new DataOutputStream(socketOnServer.getOutputStream());
in=new DataInputStream(socketOnServer.getInputStream());
while(true) {
int s1=in.readInt();
// in读取信息,堵塞状态
char u=in.readChar();
int s2=in.readInt();
System.out.println("服务器收到客户的提问:"+s1+u+s2);
switch(u) {
case '*':answer=s1*s2;break;
case '/':answer=s1/s2;break;
case '+':answer=s1+s2;break;
case '-':answer=s1-s2;break;
case '%':answer=s1%s2;break;
}
out.writeInt(answer);
}
}catch(Exception e) {
System.out.println("客户已断开"+e);
}
}
}
测试算式输入格式
import java.util.Scanner;
//测试输入方式————>输入10 + 10(数与运算符之间要有空隔间隔)
public class test {
public static void main(String args[]) {
Scanner s=new Scanner(System.in);
int s1=s.nextInt();
char ms=s.next().charAt(0);
int s2=s.nextInt();
System.out.println(s1+"\n"+ms+"\n"+s2);
}
}