今天有个小童鞋问我一个Java网络编程的问题,具体描述如下:
客户端用户输入边长,服务端返回该边长对应的面积给客户端
实现效果图
服务器:
image
客户端:
image
那么具体该怎么实现呢,这里我先简单的把主题部分写出来:
首先是服务端代码:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException{
//创建服务器容器对象,需要监听计算机中的某一个接口
ServerSocket server=new ServerSocket(2198);
String edgeString;
double edge;
//执行accept方法等待客户端连接,该方法是线程阻塞的
//如果没有客户端发送请求,该方法会阻塞当前线程
//如果有客户端发送了请求,该方法会进入执行状态并返回一个Socket对象
//该Socket对象只能用于和发送请求这一客户端进行通讯
Socket socket=server.accept();
System.out.println("有客户端连接请求到服务器");
//取出输入流
InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();
//接受数据使用死循环来处理
while(true){
if(is.available()>0){
byte[] b=new byte[is.available()];
is.read(b);
edgeString=new String(b);
edge=Double.parseDouble(edgeString);
System.out.println("服务器端收到的边长数据:"+new String(b));
//回复客户端
os.write((edge*edge+"").getBytes());
}
}
}
}
客户端代码:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws Exception, IOException {
String edgeString;
Scanner scanner=new Scanner(System.in);
//通过socket对象向服务器发送请求
Socket socket=new Socket("localhost",2198);
//创建的socket对象是计算机客户端通讯的端点
//该通讯的端点用于和服务器通讯
InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();
System.out.println("请输入正方形的边长");
edgeString=scanner.next();
//通过输出流将数据发送到通讯的另一端
os.write(edgeString.getBytes());
while(true){
if(is.available()>0){
byte[] b=new byte[is.available()];
is.read(b);
System.out.println("服务器返回的计算面积:"+new String(b));
}
}
}
}
以上就是解决办法,具体讲解都在注解中,喜欢记得点赞。
需要java资源的可以加我薇心(daydayit)
网友评论