Java基于TCP的Socket编程练习

环境:Notpad ++ 6.0 + JDK 6.0.31

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

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

代码:

TcpServer.java:

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

TcpClient.java

  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. public static final int NUM = 3;
  7. public static void main(String args[]){
  8. try {
  9. Socket socket = new Socket("127.0.0.1", 4700);
  10. BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
  11. PrintWriter os = new PrintWriter(socket.getOutputStream());
  12. System.out.println("从客户端接收三角形的三条边发送到服务器:");
  13. System.out.println("请输入3条边:");
  14. String readline = "";
  15. for (int i = 0; i < NUM; i++) {
  16. os.flush();
  17. readline = sin.readLine();
  18. os.println(readline);
  19. }
  20. os.close();
  21. socket.close();
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }

运行:

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

运行效果截图:

服务端:

Java基于TCP的Socket编程练习

客户端:

Java基于TCP的Socket编程练习

资源下载 :www.makeru.com.cn/?t=12
上一篇:SQLite3命令操作大全


下一篇:Oracle ->> 随机函数