• Java基于TCP的Socket编程练习


    环境:Notpad ++ 6.0 + JDK 6.0.31

    问题:使用套接字编写客户—服务器程序,实现客户—服务器交互计算。客户将三角形3个边的长度发给服务器,服务器把计算出的三角形的面积返回给客户。

    解决:利用Java的Socket编程。客户端发送数据,服务端接收数据,并进行相应的处理。

    代码:

     TcpServer.java:

    [java] view plain copy
     
    1. import java.io.BufferedReader;  
    2. import java.io.InputStreamReader;  
    3. import java.net.ServerSocket;  
    4. import java.net.Socket;  
    5.   
    6. public class TcpServer {  
    7.     public static final int NUM = 3;  
    8.     public static void main(String args[]){  
    9.           
    10.         TcpServer tcpServer = new TcpServer();  
    11.         try {  
    12.             ServerSocket server = null;  
    13.               
    14.             try {  
    15.                 server = new ServerSocket(4700);  
    16.             } catch (Exception e) {  
    17.                 e.printStackTrace();  
    18.             }  
    19.               
    20.             Socket socket = null;  
    21.             try {  
    22.                 socket = server.accept();  
    23.             } catch (Exception e) {  
    24.                 e.printStackTrace();  
    25.             }  
    26.               
    27.             String line = "";  
    28.             double a[] = new double[NUM];  
    29.             BufferedReader is = new BufferedReader(new InputStreamReader  
    30.                     (socket.getInputStream()));  
    31.               
    32.             System.out.println("从客户端接收三角形的三条边:");  
    33.             for (int i = 0; i < a.length; i++) {  
    34.                 line = is.readLine();  
    35.                 a[i] = Double.parseDouble(line);  
    36.             }  
    37.               
    38.               
    39.             System.out.println("三角形的面积是:" + tcpServer.countarea(a));  
    40.               
    41.             is.close();//关闭读取流  
    42.             socket.close();//关闭Socket  
    43.             server.close();//关闭ServerSocket  
    44.         } catch (Exception e) {  
    45.             e.printStackTrace();  
    46.         }  
    47.     }  
    48.       
    49.       
    50.     //计算三角形面积的方法  
    51.     public double countarea(double a[]){  
    52.         double area = 0.0;  
    53.           
    54.         double temp = 0.0;  
    55.         double aside = 0.0;  
    56.         double bside = 0.0;  
    57.         double cside = 0.0;  
    58.         aside = a[0];  
    59.         bside = a[1];  
    60.         cside = a[2];  
    61.         temp = a[0] + a[1] + a[2];  
    62.         temp = temp / 2;  
    63.           
    64.           
    65.           
    66.         area = Math.sqrt(temp * (temp - aside) * (temp - bside) * (temp - cside));  
    67.           
    68.         return area;  
    69.     }  
    70. }  


     

    TcpClient.java

    [java] view plain copy
     
    1. import java.io.BufferedReader;  
    2. import java.io.InputStreamReader;  
    3. import java.io.PrintWriter;  
    4. import java.net.Socket;  
    5. public class TcpClient {  
    6.       
    7.     public static final int NUM = 3;  
    8.     public static void main(String args[]){  
    9.         try {  
    10.             Socket socket = new Socket("127.0.0.1", 4700);  
    11.             BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));  
    12.               
    13.             PrintWriter os = new PrintWriter(socket.getOutputStream());  
    14.               
    15.             System.out.println("从客户端接收三角形的三条边发送到服务器:");  
    16.             System.out.println("请输入3条边:");  
    17.             String readline = "";  
    18.             for (int i = 0; i < NUM; i++) {  
    19.                 os.flush();  
    20.                 readline = sin.readLine();  
    21.                 os.println(readline);  
    22.             }  
    23.               
    24.             os.close();  
    25.             socket.close();  
    26.               
    27.         } catch (Exception e) {  
    28.             e.printStackTrace();  
    29.         }  
    30.     }  
    31.       
    32. }  


     

    运行:

    把客户端程序(TcpClient.java)和服务端程序(TcpServer.java)分别编译,再打开两个Cmd控制台,先运行服务端,再运行客户端,在客户端输入数据,然后就可以在服务端看到结果。

    运行效果截图:

    服务端:

    客户端:

    资源下载 :www.makeru.com.cn/?t=12
  • 相关阅读:
    一、数据库概念和操作数据库的命令
    [LeetCode] 208. Implement Trie (Prefix Tree) ☆☆☆
    [LeetCode] 329. Longest Increasing Path in a Matrix ☆☆☆
    [LeetCode] 382. Linked List Random Node ☆☆☆
    Java异常之try,catch,finally,throw,throws
    C#畅谈“网络电视”
    JavaWeb项目导入MyEclipse后变为JAVA项目项目【解决方法】
    springmvc学习笔记(理论)
    Struts2之类型转换器
    Oracle笔记
  • 原文地址:https://www.cnblogs.com/huan-huan/p/8616721.html
Copyright © 2020-2023  润新知