Java 学习之网络编程案例
网络编程案例
一,概念
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 学习之网络编程案例相关推荐
- Java学习之网络编程实例
转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...
- Java学习笔记-网络编程
Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...
- java 学习笔记-网络编程(八)
网络编程 标签:学习各种网络协议的桥梁 什么是计算机网络 计算机网络的作用:资源共享和信息传递. 计算机网络的组成: a) 计算机硬件:计算机(大中小型服务器,台式机.笔记本等).外部设备(路由器.交 ...
- java学习之网络编程
相关知识点: Transient:Java中的关键字,只能修饰变量,不能修饰类和方法. 作用:使被修饰的变量无法被序列化. 拓展:一个静态变量,无论是否被transient修饰都无法被序列化.若静态变 ...
- 【Java学习】网络编程1
网络上两台主机的交互 ①根据IP找到对方主机 ②数据发送到对方指定的应用程序上,为了表示这些应用程序,引入了端口的概念. 常用端口: wed端口80 MySQL端口3306 有效端口 0~65535 ...
- linux java socket编程_深入学习socket网络编程,以java语言为例
了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...
- Java网络编程案例--CS模型的简单实现
Java网络编程案例–CS模型的简单实现 Java网络编程案例CS模型的简单实现 基本概述 程序原理图 源代码 基本概述 该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传 ...
- Windows网络编程案例教程-董相志 学习记录 第一个网络程序hostent
<Windows网络编程案例教程>-董相志 学习记录 第一个网络程序hostent 第一章 网络编程概述 1.3.5第一个网络程序--hostent 对主机的名称和地址解析 WinSock ...
- 《Windows网络编程案例教程》-董相志 学习记录 阻塞/非阻塞套接字编程
<Windows网络编程案例教程>-董相志 学习记录 阻塞/非阻塞套接字编程 2.3 阻塞/非阻塞套接字编程 阻塞套接字编程通信流程图 2.3.1 阻塞套接字客户机编程 1.启动并初始化W ...
最新文章
- 打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过AI和人眼
- 关于面对对象和正则表达式的处理
- 今天除夕,给您拜年了!
- Funambol DM 安装过程
- 技术实践 | 用 NetworkX + Gephi + Nebula Graph 分析权力的游戏人物关系(上篇)
- html5 2015,2015年有用的16大免费的响应式HTML5框架
- 1-csv文件,解决数字不全或者数组+e的显示的问题
- 重物码垛搬运机器人_米克力美AGV:工业机器人的应用场景
- 如何扩展/删除swap分区
- 【电脑讲解】电脑知识入门大全,超详细电脑基础知识讲解
- 电阻电容串联、并联起来用在电路中,起什么作用?
- 49-从哥尼斯堡七桥问题开始
- 四通一达归于阿里后就涨价,证明资本的目标就是以垄断攫取利润
- BLE MESH----Mesh beacons
- Unity插件精选:炫酷粒子特效(V客学院知识分享)
- ARP协议和NDP协议分析
- 接口测试面试题汇总(含答案)
- 设备像素比+图片高清显示+移动适配
- 接下来或许是一年中跳槽的最佳时间
- QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之02【EC20模组硬件供电和开关机复位操作】