网络编程之TCP应用

来源:互联网 发布:python 转换成字典 编辑:程序博客网 时间:2024/05/22 13:04

** 客户端输入三角形的三条边长,判断能否组成三角形,将三条边发送到服务器端,计算三角形面积,返回给客户端(海伦公式)
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();        }    }}
0 0