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();}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅!0.2nm路线图来了!详细讲解技术实现!

来源:tomshardware编译:EETOP世界上最先进的半导体研究机构 Imec 最近在比利时安特卫普举行的未来峰会上分享了其亚1nm和晶体管路线图。该路线图让我们大致了解了到 2036 年Imec将在其实验室与台积电、英特尔、三星和 ASML 等行业巨头合作研发的下一个主…

JAVA:反射总结

01_反射(类的加载概述和加载时机) 02_反射(类加载器的概述和分类) 03_反射(反射概述) 04_反射(Class.forName()读取配置文件举例) 05_反射(通过反射获取带参构造方法并使用) 06_反射(通过反射获取成员变量并使用) 07_反射(通过反射获取方法并使用) 08_设计模式(模版(Tem…

软件工程论文实现

QUESTION:软件工程论文实现? ANSWER: 目录 QUESTION:软件工程论文实现? ANSWER: 一、论文的书写格式规范化要求 二、论文的排版格式规范化要求 三、论文书写、排版、打印规范化要求样式 一、论文的书写格式规范化要求 论文本身由论文题目、作者、中文摘要、关键词、正文、…

问题即答案-解决棘手问题的突破性方法

来源:混沌巡洋舰 “问题”(question) 中包含一个非常美妙的词:“ 探索”(quest)。我太喜欢这个词了。——埃利威塞尔(Elie Wiesel)有些人常常感觉一些真相事关重大,自己应…

CSS:盒子模型和清除float浮动的三种常用方法

目录 一:浮动产生原因: 二:浮动产生副作用: 三:浮动解决方法: QUESTION:CSS盒子模型清除浮动? ANSWER: 一:浮动产生原因: 一般浮动是什么情况呢?一般是一个盒子里使用了CSS fl…

逼真度超越「AI设计师」DALL·E 2!谷歌大脑推出新的文本生成图像模型Imagen

来源:AI科技评论作者:李梅、王玥编辑:陈彩娴文本生成图像模型界又出新手笔!这次的主角是Google Brain推出的 Imagen,再一次突破人类想象力,将文本生成图像的逼真度和语言理解提高到了前所未有的新高度&…

JavaWeb笔记:Html总结

JavaWeb笔记:Html总结 目录 JavaWeb笔记:Html总结 一、html简介 二、html基本标签 三、html表单标签(重点) 一、html简介 1、html是什么 Html是用来描述网页的一种语言。 (1)HTML 指的是超文本标记语言 (Hyper Text Markup Language) (2)H…

量子技术推动新的传感器热潮

IMPERIAL COLLEGE LONDON/M SQUARED来源:IEEE电气电子工程师想象一下,传感器可以探测思想的磁场、帮助月球车探测月球岩石中的氧气,或者接收来自暗物质的无线电波。正如量子计算机可以从理论上找到经典计算机无法解决的问题的答案一样&#x…

JavaWeb笔记:CSS总结

JavaWeb笔记:CSS总结 目录 JavaWeb笔记:CSS总结 一、css的简介 二、css选择器 三、css属性 四、css盒子模型 一、css的简介 1、什么是css 层叠样式表,css是对html进行样式修饰语言 层叠:就是层层覆盖叠加,如果不同的cs…

0.2nm路线图来了!详细讲解技术实现!

来源:tomshardware世界上最先进的半导体研究机构 Imec 最近在比利时安特卫普举行的未来峰会上分享了其亚1nm和晶体管路线图。该路线图让我们大致了解了到 2036 年Imec将在其实验室与台积电、英特尔、三星和 ASML 等行业巨头合作研发的下一个主要工艺节点和晶体管架构…

JavWeb笔记:JavaScript总结

JavWeb笔记:JavaScript总结 目录 JavWeb笔记:JavaScript总结 一、js简介 二、基本语法 三、js内建对象 四、js的函数 五、js的事件 六、js的bom 七、js的dom 一、js简介 1、js是什么 2、js作用 3、组成 4、引入方式 二、基本语法 1、变量 2、原始数据…

走向认知发展的理性建构理论

Towards a Rational Constructivist Theory of Cognitive Development Fei Xu University of California, Berkeley来源:CreateAMind本文对认知发展理论——理性建构主义进行了综述。这种观点的基本原则如下:(a)初始状态:人类婴儿以一组原型概念的原语开始生命。这些…

JavaWeb笔记:JDBC总结

JavaWeb笔记:JDBC总结 目录 JavaWeb笔记:JDBC总结 一、JDBC概述 二、开发一个JDBC程序(重要) 三、JDBC常用的类和接口详解 1、java.sql.Drivermanager类 : 创建连接 2、java.sql.Connection接口:一个连接 3、java.sql.Statement接口:…

谷歌街景15年乾坤大挪移!带你穿越法老的金字塔

来源:机器学习研究组订阅最近两年多,整个世界都被一个共同对手折腾得够呛。有人咬牙坚持、有人躺平摆烂,有人祈求上天,还有人离开了这个世界。更多的人们则逐渐意识到,原来所谓「Good Old Times」离我们竟然如此之近&a…

如何构建可信GNN?最新综述来了!可信图神经网络:维度,方法,趋势

来源:Monash University作者:He Zhang,Bang Wu前言在过去的几年里,以神经网络为首的人工智能技术通过对不同类型数据的深入挖掘已经深刻地改变了人类的生活并极大地推动了社会发展的进程 [1]。作为人工智能领域最活跃的研究方向之…

JavaWeb:XML总结

JavaWeb:XML总结 目录 JavaWeb:XML总结 一:什么是XML? 二:xml语法: 三: xml约束: 四:XML解析思想: 一:什么是XML? XML:eXtensible Markup La…

JavaWeb:tomcat服务器安装总结及Http协议

JavaWeb:tomcat服务器安装总结 目录 JavaWeb:tomcat服务器安装总结 一:服务器端概述: 二:Tomcat下载: 三:安装: 四:HTTP问题: 五:深入了解tomcat服务器&#xff1…

深度知识的6个维度:如何让人工智能真正理解世界?

智能的真正标志不是知识,而是想象力。来源:AI科技评论作者:Gadi Singer编译:王玥编辑:陈彩娴什么知识让我们变得聪明?我们用来理解世界、解释新体验和做出深思熟虑的选择的认知结构是什么?定义一…

C语言:fopen与open的总结

目录 QUESTION:fopen与open的总结? ANSWER: 1.非缓冲文件系统 2.缓冲文件系统 3.具体区别 QUESTION:fopen与open的总结? ANSWER: 1.非缓冲文件系统 缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符…

2013年图灵奖得主Leslie Lamport:如何写出数学上完美的算法

来源:新智元图灵奖得主、分布式系统先驱、LaTeX之父Leslie Lamport认为,对于程序员而言,对数学思维的强调永远不会过分,要写出好代码,不能惧怕数学。Leslie Lamport可能不是一个家喻户晓的名字,但一提到和他…