美文网首页
java网络编程

java网络编程

作者: ThinkIT_SVM | 来源:发表于2020-12-08 14:54 被阅读0次

    今天有个小童鞋问我一个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)

    相关文章

      网友评论

          本文标题:java网络编程

          本文链接:https://www.haomeiwen.com/subject/fjafgktx.html