环境: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控制台,先运行服务端,再运行客户端,在客户端输入数据,然后就可以在服务端看到结果。

运行效果截图:

服务端:

客户端:

资源下载 :www.makeru.com.cn/?t=12

Java基于TCP的Socket编程练习的更多相关文章

  1. Winfrom 基于TCP的Socket 编程

    基于TCP的Socket基础例子 服务端的代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); ...

  2. 网络编程学习笔记(二)基于TCP的Socket编程

    1.Socket:英文意思插座.两个Java应用程序可以通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket. 2.Socket通常用来实现client-server(客户端 ...

  3. 【转/TCP协议编程】 基于TCP的Socket 编程

    基于TCP(面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)向服务器发出连接请求(connect) (3)和服务器端进行通信(send ...

  4. Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

  5. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...

  6. Python进阶(1)_Socket网络编程(基于tcp的socket)

    网络协议参考:http://www.cnblogs.com/hedeyong/p/6889774.html 一.TCP/IP五层模型 学习socket一定要先学习互联网协议: 1.首先:本节课程的目标 ...

  7. Python网络编程03 /缓存区、基于TCP的socket循环通信、执行远程命令、socketserver通信

    Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命令.socketserver通信 目录 Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命 ...

  8. (1)线程的同步机制 (2)网络编程的常识 (3)基于tcp协议的编程模型

    1.线程的同步机制(重点)1.1 基本概念 当多个线程同时访问同一种共享资源时可能会造成数据的覆盖和不一致等问题,此时就需要对线程之间进行协调和通信,该方式就叫线程的同步机制. 如: 2003年左右 ...

  9. (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制

    1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...

随机推荐

  1. CodeForces-748C

    这题就是确定一个点,然后去找能够实现最短距离的点且距离最远的点,因为题目要求点最少.在查找时,如果从最后的点开始枚举,找到的第一个满足距离最短的点一定是最远点,但是查找的复杂度是O(n),共有n次查找 ...

  2. HDU - 1430 魔板 (bfs预处理 + 康托)

    对于该题可以直接预处理初始状态[0, 1, 2, 3, 4, 5, 6, 7]所有可以到达的状态,保存到达的路径,直接打印答案即可. 关于此处的状态转换:假设有初始状态为2,3,4,5,0,6,7,1 ...

  3. python语言中的AOP利器:装饰器

    一.前言 面向切面编程(AOP)是一种编程思想,与OOP并不矛盾,只是它们的关注点相同.面向对象的目的在于抽象和管理,而面向切面的目的在于解耦和复用. 举两个大家都接触过的AOP的例子: 1)java ...

  4. armlinux下的网路传输(tcp/ip)

    /*ex2serv.c*/ #include <time.h> #include<stddef.h> #include <stdio.h> #include < ...

  5. R语言︱SNA-社会关系网络 R语言实现专题(基础篇)(一)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:这里所有的应用代码都来自与igrap ...

  6. Css中路径data:image/png;base64的用法详解

    今天查看一些网站的css中发现了 background-image:url(data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAAB ...

  7. VxWorks程序指南

    ******************************************* 一.任务 ******************************************* 任务状态:挂起 ...

  8. XP硬盘读写速度很慢的解决方法

    05购入的电脑,今日仍在发挥余热,但系统速度慢得出奇.今日检测了硬盘读写速度还不到2m/s,实在令人难以接受.一查之下,硬盘被置为PIO模式了,难怪. 用以下方法得以解决: 1.对桌面"我的 ...

  9. javaWeb中request请求转发和response重定向

    1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL.  2.request.get Forward代码中的&q ...

  10. Java web切面编程

    在我们的 web开发中  我们在 对公用的 一些方法 我们需要抽取出来   这样达到 代码的冗余   今天 我利用项目上用的AOP的 实际 应用做了一个整理 首先  xml配置  扫描 <?xm ...