您的位置:首页 > 理论基础 > 计算机网络

网络编程之TCP应用

2016-08-24 22:20 106 查看
** 客户端输入三角形的三条边长,判断能否组成三角形,将三条边发送到服务器端,计算三角形面积,返回给客户端(海伦公式)

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();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络编程
相关文章推荐