网络编程之TCP应用

** 客户端输入三角形的三条边长,判断能否组成三角形,将三条边发送到服务器端,计算三角形面积,返回给客户端(海伦公式)
a,b,c
p = (a+b+c)/2
area=Math.sqrt(p*(p-a)(p-b)(p-c));
**
1.服务器端

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket ss=new ServerSocket(9999);
            Socket s=ss.accept();
            DataInputStream dis=new DataInputStream(s.getInputStream());
            Double[] b=new Double[3];
            double x;
            double res=0;
            for(int i=0;i<b.length;i++){
                b[i]=dis.readDouble();
            }
            //判断三角形的特性
            if(b[1]+b[2]>b[0]&&b[0]+b[1]>b[2]&&b[0]-b[1]<b[2]&&b[1]-b[2]<b[0]){
                x=(b[0]+b[1]+b[2])/2;
                //area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
                res=Math.sqrt(x*(x-b[0])*(x-b[1])*(x-b[2]));
            }
            DataOutputStream dos=new DataOutputStream(s.getOutputStream());
            dos.writeDouble(res);
            dos.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

用户端

public class Client {
    public static void main(String[] args) {
        try {
            Socket s=new Socket("127.0.0.1", 9999);
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            DataOutputStream dos=new DataOutputStream(s.getOutputStream());
            //后面把br.readLine()换成了Double类型,所以直接用InputStream写入网络流
//          byte[] b=new byte[3];
            for(int i=0;i<3;i++){
            //Double的parseDouble方法: 返回一个新的 double 值,该值被初始化为用指定 String 表示的值,这与 Double 类的 valueOf 方法一样。
                dos.writeDouble(Double.parseDouble(br.readLine()));
                //写入一次服务器收到一次
                dos.flush();
            }
            DataInputStream dis=new DataInputStream(s.getInputStream());
            System.out.println(dis.readDouble());
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值