JAVA:网络编程总结
目录
01_网络编程(网络编程概述)(了解)
02_网络编程(网络编程三要素之IP概述)(掌握)
03_网络编程(网络编程三要素之端口号概述)(掌握)
04_网络编程(网络编程三要素协议)(掌握)
05_网络编程(Socket通信原理图解)(了解)
06_网络编程(UDP传输)(了解)07_网络编程(UDP传输优化)
08_网络编程(UDP传输多线程)
09_网络编程(TCP协议)(掌握)
10_网络编程(TCP协议代码优化)
11_网络编程(服务端是多线程的)(掌握)
01_网络编程(网络编程概述)(了解)
* A:计算机网络 // * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, // 在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 // * B:网络编程 // * 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。
02_网络编程(网络编程三要素之IP概述)(掌握)
* 每个设备在网络中的唯一标识 // * 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。 // * ipconfig:查看本机IP192.168.12.42 // * ping:测试连接192.168.40.62 // * 本地回路地址:127.0.0.1 255.255.255.255是广播地址 // * IPv4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。 // * IPv6:8组,每组4个16进制数。 // * 1a2b:0000:aaaa:0000:0000:0000:aabb:1f2f // * 1a2b::aaaa:0000:0000:0000:aabb:1f2f // * 1a2b:0000:aaaa::aabb:1f2f // * 1a2b:0000:aaaa::0000:aabb:1f2f // * 1a2b:0000:aaaa:0000::aabb:1f2f //
03_网络编程(网络编程三要素之端口号概述)(掌握)
* 每个程序在设备上的唯一标识 // * 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。 // * 端口号范围从0-65535 // * 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。 // * 常用端口 // * mysql: 3306 // * oracle: 1521 // * web: 80 // * tomcat: 8080 // * QQ: 4000 // * feiQ: 2425
04_网络编程(网络编程三要素协议)(掌握)
* 为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 // * UDP // * 面向无连接,数据不安全,速度快。不区分客户端与服务端。 // * TCP // * 面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。 // * 三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据 //
05_网络编程(Socket通信原理图解)(了解)
* A:Socket套接字概述: // * 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。 // * 通信的两端都有Socket。 // * 网络通信其实就是Socket间的通信。 // * 数据在两个Socket间通过IO流传输。 // * Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。下面是Socket传输代码,先启动发送端
public class testSend1 {public static void main(String []args) throws Exception {String s="弄啥嘞";DatagramSocket socket=new DatagramSocket(); //创建Socket,相当于创建码头//创建Packet,相当于创建集装箱DatagramPacket packet=new DatagramPacket(s.getBytes(),s.getBytes().length, InetAddress.getByName("127.0.0.1"),6666);socket.send(packet); //发货,将数据形成socket.close();}
}
public class testReceive1 {public static void main(String []args) throws Exception {DatagramSocket socket=new DatagramSocket(6666);DatagramPacket packet=new DatagramPacket(new byte[1024],1024);socket.receive(packet); //接收数据byte []arr=packet.getData(); //获取数据int length=packet.getLength(); //获取有效的字节个数System.out.println(new String(arr,0,length));socket.close();}
}
06_网络编程(UDP传输)(了解)07_网络编程(UDP传输优化)
public class testSend2 {public static void main(String []args) throws Exception {Scanner in=new Scanner(System.in);DatagramSocket socket = new DatagramSocket(); //创建Socket,相当于创建码头//创建Packet,相当于创建集装箱while (true) {System.out.println("请输入: quit结束");String s=in.nextLine();if (s.equals("quit")){break;}DatagramPacket packet = new DatagramPacket(s.getBytes(), s.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);socket.send(packet);//发货,将数据形成}socket.close();}
}
public class testReceive2 {public static void main(String []args) throws Exception {DatagramSocket socket=new DatagramSocket(6666);while (true) {DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);socket.receive(packet); //接收数据byte[] arr = packet.getData(); //获取数据int length = packet.getLength(); //获取有效的字节个数String ip=packet.getAddress().getHostAddress();int port=packet.getPort();System.out.println("IP:"+ip+"Port:"+port+new String(arr, 0, length));}}
}
08_网络编程(UDP传输多线程)
public class testSend3 {public static void main(String []args){new ReceiveTest().start();new SendTest().start();}
}
class ReceiveTest extends Thread{@Overridepublic void run() {try {DatagramSocket socket=new DatagramSocket(6666);while (true) {DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);socket.receive(packet); //接收数据byte[] arr = packet.getData(); //获取数据int length = packet.getLength(); //获取有效的字节个数String ip=packet.getAddress().getHostAddress();int port=packet.getPort();System.out.println("IP:"+ip+"Port:"+port+new String(arr, 0, length));}} catch (IOException e) {e.printStackTrace();}}
}
class SendTest extends Thread{@Overridepublic void run() {try {Scanner in=new Scanner(System.in);DatagramSocket socket = new DatagramSocket(); //创建Socket,相当于创建码头//创建Packet,相当于创建集装箱while (true) {System.out.println("请输入: quit结束");String s=in.nextLine();if (s.equals("quit")){break;}DatagramPacket packet = new DatagramPacket(s.getBytes(), s.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);socket.send(packet);//发货,将数据形成}socket.close();} catch (IOException e) {e.printStackTrace();}}
}
09_网络编程(TCP协议)(掌握)
下面是TCP传输,先启动服务器端,后启动客户端
* 2.服务端 * * * 创建ServerSocket(需要指定端口号) * * * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket * * * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流 * * * 输入流可以读取客户端输出流写出的数据 * * * 输出流可以写出数据到客户端的输入流
public class testServer1 {public static void main(String []args) throws IOException {ServerSocket serverSocket=new ServerSocket(6666);Socket socket=serverSocket.accept(); //接受客户端的请求InputStream is=socket.getInputStream(); //接受客户端输入流OutputStream os=socket.getOutputStream(); //获取客户端输出流os.write("百度一下,你就知道".getBytes()); //服务器向客户端写出数据byte []arr=new byte[1024];int b=is.read(arr); //读取客户端的数据String s=new String(arr,0,b);System.out.println(s);socket.close();}
}
* * 1.客户端 * * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器 * * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流 * * 输入流可以读取服务端输出流写出的数据 * * 输出流可以写出数据到服务端的输入流
public class testClient1 {public static void main(String []args) throws IOException {Socket socket= new Socket("192.168.0.7",6666);InputStream is=socket.getInputStream(); //获取客户端输入流OutputStream os=socket.getOutputStream(); //获取客户端输出流byte []arr=new byte[1024];int b=is.read(arr);String s=new String(arr,0,b);System.out.println(s);os.write("勇敢去追".getBytes()); //客户端向服务器端写数据socket.close();}
}
10_网络编程(TCP协议代码优化)11_网络编程(服务端是多线程的)(掌握)
public class testServer2 {public static void main(String []args) throws IOException {ServerSocket serverSocket=new ServerSocket(6666);while (true) {Socket socket = serverSocket.accept(); //接受客户端的请求new Thread(){ //每接受一个请求就开启一次线程@Overridepublic void run() {try {BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); //将字节流包装成字符流PrintStream ps = new PrintStream(socket.getOutputStream()); //PrintStream有写出换行的方法ps.println("你好,客户端");System.out.println(br.readLine());ps.println("这是服务器端");System.out.println(br.readLine());socket.close();} catch (IOException e) {e.printStackTrace();}}}.start();}}
}
public class testClient2 {public static void main(String []args) throws IOException {Socket socket= new Socket("192.168.0.7",6666);BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); //将字节流包装成字符流PrintStream ps=new PrintStream(socket.getOutputStream()); //PrintStream有写出换行的方法System.out.println(br.readLine());ps.println("你好,我是客户端"); //向服务器端写出System.out.println(br.readLine());ps.println("这是客户端");socket.close();}
}
JAVA:网络编程总结相关推荐
- java 密钥工厂 desede_20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...
- Java学习总结:52(Java网络编程)
Java网络编程 开发第一个网络程序 java.net包提供了网络编程有关的开发工具类,在此包中有一下两个主要的核心操作类. ServerSocket类:是一个封装支持的TCP协议的操作类,主要工作在 ...
- Java - 网络编程(NetWork)
Java - 网络编程(NetWork) 一.java.net包下的 InetAddress 类的使用: > 一个 InetAddress 代表着一个IP地址 > 主要用来查看本机的IP和 ...
- 【Java】 Java网络编程总结
一.网络编程三要素: IP地址:每个设备在网络中的唯一标识. 端口号:每个程序在设备上的唯一标识. 协议:为计算机网络中进行数据交换而建立的规则或约定的集合. UDP: 面向无连接,数据不安全,速度 ...
- Java网络编程笔记5
在Java网络编程笔记4中我们看到了客户端与服务器通信的过程,只是在前面的程序只是单个客户端与服务器通信 的例子. 接下来我们看如何实现多个客户端与服务器通信,对于服务器来说,它要为每个客户端请求的S ...
- 实验五 Java网络编程及安全 实验报告 20135232王玥
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序与设计 班级:1352 姓名:王玥 学号:20135232 成绩: 指导 ...
- NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
1.基本概念 在Java网络通信中,最基本的概念就是Socket编程了.Socket又称"套接字" 向网络发出请求或者应答网络请求. Socket 和ServerSocket类库位 ...
- 04.Java网络编程(转载)
1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含 ...
- python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...
- 你所需要的java网络编程大总结
好好学java java知识分享/学习教程免费分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 梦 上个月 ...
最新文章
- 计算机系统安装和维护实验,2计算机系统安装维护实验报告.doc
- 月入过万的副业你要不要?不需要编程知识,不限男女,不限学历
- 山东鲁能轨道智能巡检机器人_城市轨道智能巡检机器人原来你这么酷炫!
- 苹果7plus专用计算机,iphone7plus怎么用 iphone7plus使用技巧【详解】
- 有关ArrayList增加Map引发的一个BUG
- 实验二+065+方绎杰
- Eclipse中配置mybatis-3-config.dtd
- 半带滤波器 cic滤波器
- 本地搭建私有云盘:群晖系统存储空间设置 3/5
- word去掉多余空格,换行符
- 为什么onenote一直在加载_2.为什么人人都需要OneNote?
- AMBA总线概述——AHB、APB、AXI
- ESMTP协议与SMTP协议
- 使用java获取硬盘序列号
- Mysql Join-连接查询(上)
- PowerQuery的数据获取界面(Excel及PowerBI)的异同-PowerQuery系列文章之二
- 聊聊Linux 五种IO模型
- 汇编:汇编的基本介绍
- IMS 呼叫流程简单分析
- 如何使计算机理解中医药知识,计算机技术在中医药信息学应用概
热门文章
- 想要学好C++有哪些技巧?
- 地壳中元素含量排名记忆口诀_在地球46亿年的历史中,氮气始终是含量最高的气体,为什么?...
- TQ210——S5PV210中断体系
- python逆序数的程序_计算逆序数(归并法)程序问题 (Python)
- 核酸结果统计难?130行代码实现基于ocr的核酸截图识别存储Excel(复现代码核查核酸报告)
- LeetCode 683. K 个空花盆(set/滑动窗口)
- LeetCode 107. 二叉树的层次遍历 II(队列)
- LeetCode 993. 二叉树的堂兄弟节点(层序遍历)
- andriod studio 运行 无结果_无负压静音供水设备下篇一
- 【Python基础知识-pycharm版】第六节-控制语句