网络编程案例

一,概念

1,网络编程不等于网站编程

2,编程只和传输层打交道,即TCP和UDP两个协议

二,案例

1,TCP实现点对点的聊天

Server端:两个输入流:读客户端和控制台,一个输出端:输出客户端

public class ChatServer {public static void main(String[] args) {try {ServerSocket serverSocket=new ServerSocket(44432);Socket socket=serverSocket.accept();//获取客户端的连接信息BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));//client 的输入内容PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//往client输出内容System.out.println("client say:"+bufferedReader.readLine());Scanner bufferedReader1=new Scanner(System.in);//控制台输入内容String message=bufferedReader1.next();while(!message.equals("end")) {printWriter.println(message);//send message to client
                printWriter.flush();System.out.println("client say:"+bufferedReader.readLine());// get message from clientmessage=bufferedReader1.next();}bufferedReader.close();printWriter.close();bufferedReader1.close();} catch (IOException e) {e.printStackTrace();}}
}

Client端:两个输入流:读服务端和控制台,一个输出端:输出服务端

public class ChatClient {public static void main(String[] args) {try {Socket socket=new Socket("127.0.0.1",44432);//获取服务端的唯一标识PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//BufferedWriter流也可以BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedReader bufferedReader1=new BufferedReader(new InputStreamReader(System.in));String message=bufferedReader1.readLine();while (!message.equals("end")){printWriter.write(message+"\r\n");//加\r\n,因为读取时是用readLine方式 ,等同于println方式printWriter.flush();//必须flush,不然另一端读不到。。。System.out.println("server say:"+bufferedReader.readLine());message=bufferedReader1.readLine();}bufferedReader.close();bufferedReader1.close();} catch (IOException e) {e.printStackTrace();}}
}

2,UDP 实现高精度数字传输   通过数据报形式

接收端:

public class UdpServer {public static void main(String[] args) {byte[] buf=new byte[1024];//存储接受数据报的容器DatagramPacket datagramPacket=new DatagramPacket(buf,buf.length);//数据报内容写入容器try {DatagramSocket datagramSocket=new DatagramSocket(44423);while (true){datagramSocket.receive(datagramPacket);//接收发送方的数据报ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(buf);DataInputStream dataInputStream=new DataInputStream(byteArrayInputStream);System.out.println("clint say:"+dataInputStream.readDouble());}} catch (Exception e) {e.printStackTrace();}}
}

发送端:

public class UdpClient {public static void main(String[] args) {double n=10000.00;try {ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();DataOutputStream dataOutputStream=new DataOutputStream(byteArrayOutputStream);dataOutputStream.writeDouble(n);//创建代有数据报内容和目的地址DatagramPacket datagramPacket=new DatagramPacket(byteArrayOutputStream.toByteArray(),byteArrayOutputStream.toByteArray().length,new InetSocketAddress("127.0.0.1",44423));DatagramSocket datagramSocket=new DatagramSocket(53421);//指定发送的端口
            datagramSocket.send(datagramPacket);} catch (Exception e) {e.printStackTrace();}}
}

转载于:https://www.cnblogs.com/ksWorld/p/6775202.html

Java 学习之网络编程案例相关推荐

  1. Java学习之网络编程实例

    转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...

  2. Java学习笔记-网络编程

    Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...

  3. java 学习笔记-网络编程(八)

    网络编程 标签:学习各种网络协议的桥梁 什么是计算机网络 计算机网络的作用:资源共享和信息传递. 计算机网络的组成: a) 计算机硬件:计算机(大中小型服务器,台式机.笔记本等).外部设备(路由器.交 ...

  4. java学习之网络编程

    相关知识点: Transient:Java中的关键字,只能修饰变量,不能修饰类和方法. 作用:使被修饰的变量无法被序列化. 拓展:一个静态变量,无论是否被transient修饰都无法被序列化.若静态变 ...

  5. 【Java学习】网络编程1

    网络上两台主机的交互 ①根据IP找到对方主机 ②数据发送到对方指定的应用程序上,为了表示这些应用程序,引入了端口的概念. 常用端口: wed端口80 MySQL端口3306 有效端口 0~65535 ...

  6. linux java socket编程_深入学习socket网络编程,以java语言为例

    了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...

  7. Java网络编程案例--CS模型的简单实现

    Java网络编程案例–CS模型的简单实现 Java网络编程案例CS模型的简单实现 基本概述 程序原理图 源代码 基本概述 该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传 ...

  8. Windows网络编程案例教程-董相志 学习记录 第一个网络程序hostent

    <Windows网络编程案例教程>-董相志 学习记录 第一个网络程序hostent 第一章 网络编程概述 1.3.5第一个网络程序--hostent 对主机的名称和地址解析 WinSock ...

  9. 《Windows网络编程案例教程》-董相志 学习记录 阻塞/非阻塞套接字编程

    <Windows网络编程案例教程>-董相志 学习记录 阻塞/非阻塞套接字编程 2.3 阻塞/非阻塞套接字编程 阻塞套接字编程通信流程图 2.3.1 阻塞套接字客户机编程 1.启动并初始化W ...

最新文章

  1. 打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过AI和人眼
  2. 关于面对对象和正则表达式的处理
  3. 今天除夕,给您拜年了!
  4. Funambol DM 安装过程
  5. 技术实践 | 用 NetworkX + Gephi + Nebula Graph 分析权力的游戏人物关系(上篇)
  6. html5 2015,2015年有用的16大免费的响应式HTML5框架
  7. 1-csv文件,解决数字不全或者数组+e的显示的问题
  8. 重物码垛搬运机器人_米克力美AGV:工业机器人的应用场景
  9. 如何扩展/删除swap分区
  10. 【电脑讲解】电脑知识入门大全,超详细电脑基础知识讲解
  11. 电阻电容串联、并联起来用在电路中,起什么作用?
  12. 49-从哥尼斯堡七桥问题开始
  13. 四通一达归于阿里后就涨价,证明资本的目标就是以垄断攫取利润
  14. BLE MESH----Mesh beacons
  15. Unity插件精选:炫酷粒子特效(V客学院知识分享)
  16. ARP协议和NDP协议分析
  17. 接口测试面试题汇总(含答案)
  18. 设备像素比+图片高清显示+移动适配
  19. 接下来或许是一年中跳槽的最佳时间
  20. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之02【EC20模组硬件供电和开关机复位操作】

热门文章

  1. 爬虫学习笔记(七)——Scrapy框架(二):Scrapy shell、选择器
  2. Dubbo和SpringCloud的区别
  3. 数据库的主键ID设置为自动增加,删除记录后的记录还是递增的,如何重新从1开始增加呢?
  4. python的全局变量能暂存数据吗_Python 中的全局变量 局部变量
  5. php json java_php 解析java传过来的json数据
  6. Spring学习1之ioc
  7. JAVA模拟某信网登录信息采集
  8. 简单的复数运算(类和对象)_JAVA
  9. JVM内幕:Java虚拟机详解
  10. IntelliJ IDEA导航特性Top20