iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java 网络编程总结
  • 176
分享到

Java 网络编程总结

2024-04-02 19:04:59 176人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、IP地址2、端口3、通信协议3.1 tcp/IP协议簇:实际上是一组协议3.2 TCP UDP对比3.3 TCP实现聊天3.4 TCP文件上传3.5 UDP消息发送3.6 U

1、IP地址

IP地址IntAddress:

  • 唯一定位一台网络上的计算机
  • 127.0.0.1:本地localhost
  • IP地址的分类

ipV4/ipV6

  • ipV4:127.0.0.1,4个字节组成;0~255,42亿~;30亿都在北美,亚洲4亿;2011年就用完了
  • ipV6:128位。8个无符号整数

公网(互联网)-私网(局域网)

  • ABCD类地址
  • 192.168 .xx.xx,专门给组织内部使用的

域名:方面记忆,免去了记录IP的问题


 1 //测试IP
 2 public class TestInetAddress {
 3     public static void main(String[] args) {
 4         try {
 5             //查询本机地址
 6             InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
 7             System.out.println(inetAddress);
 8             InetAddress localhost = InetAddress.getByName("localhost");
 9             System.out.println(localhost);
10             InetAddress localHost = InetAddress.getLocalHost();
11             System.out.println(localHost);
12 
13             //查询网站ip地址
14             InetAddress inetAddress1 = InetAddress.getByName("www.baidu.com");
15             System.out.println(inetAddress1);
16 
17             //常用方法
18             System.out.println(inetAddress1.getHostAddress());//ip
19             System.out.println(inetAddress1.getHostName());//域名,或者自己的名字
20         } catch (UnknownHostException e) {
21             e.printStackTrace();
22         }
23     }
24 }

2、端口

ip相当于省/市/区/街/楼,端口就是门牌号;端口表示计算机上的一个程序的进程

  • 不同的进程有不同的端口号!用来区分软件!
  • 被规定0~65535
  • TCP,UDP:65535*2;tcp:80;udp:80
  • 端口分类

端口分类:

  • 公有端口0~1023
  • Http:80
  • https:443
  • FTP:21
  • Telent:23

程序注册端口:1024~49151,分配用户或者程序

动态、私有:49152~65535


//CMD
netstat -ano #查看所有的端口
netstat -ano|findstr "5900" #查看指定的端口
tasklist|findstr "8696" #查看指定端口的进程



 1 //端口
 2 public class TestInetSocketAddress {
 3     public static void main(String[] args) {
 4         InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 8080);
 5         System.out.println(socketAddress);
 6 
 7         System.out.println(socketAddress.getAddress());
 8         System.out.println(socketAddress.getHostName());//地址
 9         System.out.println(socketAddress.getPort());//端口
10     }
11 }

3、通信协议

协议:约定,共同遵守,都能理解

网络通信协议:速率,传输码率,代码结构,传输控制....

3.1 TCP/IP协议簇:实际上是一组协议

重要:

  • TCP:用户传输协议
  • UDP:用户数据报协议

3.2 TCP UDP对比

TCP:打电话

  • 连接,稳定
  • 三次握手,四次挥手
  • 客户端、服务端
  • 传输完成,释放连接,效率低

UDP:发短信

  • 不连接,不稳定
  • 客户端、服务端:没有明确的界限
  • 不管有没有准备好,都可以发给你

3.3 TCP实现聊天


 1 //服务端
 2 public class TcpServerDemo01 {
 3     public static void main(String[] args) {
 4         ServerSocket serverSocket = null;
 5         Socket accept=null;
 6         InputStream is=null;
 7         ByteArrayOutputStream baos=null;
 8         try {
 9             //1.得有一个地址
10             serverSocket = new ServerSocket(9999);
11 
12             while (true){
13                 //2.等待客户端连接过来
14                 accept = serverSocket.accept();
15                 //3.读取客户端得消息
16                 is = accept.getInputStream();
17 
18                 //管道流
19                 baos = new ByteArrayOutputStream();
20                 byte[] bytes = new byte[1024];
21                 int len;
22                 while ((len=is.read(bytes))!=-1){
23                     baos.write(bytes,0,len);
24                 }
25                 System.out.println(baos.toString());
26             }
27 
28         } catch (IOException e) {
29             e.printStackTrace();
30         }finally {
31             //关闭流
32             try {
33                 baos.close();
34             } catch (IOException e) {
35                 e.printStackTrace();
36             }
37             try {
38                 is.close();
39             } catch (IOException e) {
40                 e.printStackTrace();
41             }
42             try {
43                 accept.close();
44             } catch (IOException e) {
45                 e.printStackTrace();
46             }
47             try {
48                 serverSocket.close();
49             } catch (IOException e) {
50                 e.printStackTrace();
51             }
52 
53         }
54     }
55 }
 1 //客户端
 2 public class TcpClientDemo01 {
 3     public static void main(String[] args) {
 4         Socket socket=null;
 5         OutputStream os=null;
 6 
 7         try {
 8             //1.要直到服务器得地址
 9             InetAddress serverIP= InetAddress.getByName("127.0.0.1");
10             int port=9999;
11             //2.创建一个socker连接
12             try {
13                 socket = new Socket(serverIP,port);
14                 //3.发送消息 IO流
15                 os = socket.getOutputStream();
16                 os.write("Hello".getBytes());
17             } catch (IOException e) {
18                 e.printStackTrace();
19             }
20 
21 
22         } catch (UnknownHostException e) {
23             e.printStackTrace();
24         }finally {
25             try {
26                 os.close();
27             } catch (IOException e) {
28                 e.printStackTrace();
29             }
30             try {
31                 socket.close();
32             } catch (IOException e) {
33                 e.printStackTrace();
34             }
35         }
36     }
37 }

3.4 TCP文件上传


 1 //服务端
 2 public class TcpServerDemo02 {
 3     public static void main(String[] args) throws Exception{
 4         //1.创建服务
 5         ServerSocket serverSocket = new ServerSocket(9000);
 6         //2.监听客户端得连接
 7         Socket accept = serverSocket.accept();//阻塞式监听,会一直等待客户端得连接
 8         //3.获取输入流
 9         InputStream is = accept.getInputStream();
10 
11         //4.文件输出
12         FileOutputStream fos = new FileOutputStream("receive.jpg");
13         byte[] by = new byte[1024];
14         int len;
15         while ((len=is.read(by))!=-1){
16             fos.write(by,0,len);
17         }
18 
19         //通知客户端我接收完毕了
20         OutputStream os = accept.getOutputStream();
21         os.write("接收完毕".getBytes());
22 
23         os.close();
24         fos.close();
25         is.close();
26         accept.close();
27         serverSocket.close();
28     }
29 }
 1 //客户端
 2 public class TcpClientDemo02 {
 3     public static void main(String[] args) throws Exception{
 4         //1.创建一个socket连接
 5         Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9000);
 6         //2.创建一个输出流
 7         OutputStream os = socket.getOutputStream();
 8 
 9         //3.读取文件
10         FileInputStream fis = new FileInputStream("D:\\WorkSpace\\JavaSE\\基础语法\\111.png");
11         //4.写出文件
12         byte[] by = new byte[1024];
13         int len;
14         while ((len=fis.read(by))!=-1){
15             os.write(by,0,len);
16         }
17 
18         //通知服务器,我已经传输结束了
19         socket.shutdownOutput();
20 
21         //确认服务器接收完毕,才能断开连接
22         InputStream is = socket.getInputStream();
23         ByteArrayOutputStream baos = new ByteArrayOutputStream();
24 
25         byte[] bytes = new byte[1024];
26         int leng;
27         while ((leng=is.read(bytes))!=-1){
28             baos.write(bytes,0,leng);
29         }
30         System.out.println(baos.toString());
31 
32         baos.close();
33         is.close();
34         os.close();
35         fis.close();
36         socket.close();
37     }
38 }

3.5 UDP消息发送


 1 //发送方
 2 public class UdpClientDemo01 {
 3     public static void main(String[] args) throws Exception{
 4         //1.建立一个Socket
 5         DatagramSocket datagramSocket = new DatagramSocket();
 6 
 7         //2.建个包
 8         String msg="你好啊,服务器!";
 9         InetAddress localhost = InetAddress.getByName("localhost");
10         int port = 9090;
11 
12         //数据、数据的长度起始、要发给谁
13         DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);
14 
15         //发送包
16         datagramSocket.send(datagramPacket);
17 
18         //4.关闭流
19         datagramSocket.close();
20     }
21 }
 1 //接收方
 2 public class UdpServerDemo01 {
 3     public static void main(String[] args) throws Exception{
 4         //开放端口
 5         DatagramSocket datagramSocket = new DatagramSocket(9090);
 6         //接收数据
 7         byte[] bytes = new byte[1024];
 8         DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length);
 9 
10         datagramSocket.receive(datagramPacket);//阻塞接收
11 
12         System.out.println(datagramPacket.getAddress());
13         System.out.println(new String(datagramPacket.getData(),0,datagramPacket.getLength()));
14     }
15 }

3.6 UDP聊天实现


 1 //发送方
 2 public class UdpSenderDemo01 {
 3     public static void main(String[] args) throws Exception{
 4 
 5         DatagramSocket datagramSocket = new DatagramSocket(8888);
 6 
 7         //准备数据:控制台读取System.in
 8         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 9 
10         while (true){
11             String data=reader.readLine();
12             byte[] bytes = data.getBytes();
13             DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length,new InetSocketAddress("localhost",6666));
14             datagramSocket.send(datagramPacket);
15             if(bytes.equals("byebye")){
16                 break;
17             }
18         }
19         datagramSocket.close();
20     }
21 }
 1 //接收方
 2 public class UdpReceiveDemo01 {
 3     public static void main(String[] args) throws Exception{
 4         DatagramSocket datagramSocket = new DatagramSocket(6666);
 5 
 6         while (true){
 7             //准备接收包裹
 8             byte[] bytes = new byte[1024];
 9             DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length);
10 
11             //断开连接 byebye
12             byte[] data = datagramPacket.getData();
13             String string = new String(data, 0, data.length);
14             System.out.println(string);
15             if(string.equals("byebye")){
16                 break;
17             }
18         }
19 
20         datagramSocket.close();
21 
22     }
23 }

到此这篇关于Java 网络编程总结的文章就介绍到这了,更多相关Java 网络编程内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java 网络编程总结

本文链接: https://www.lsjlt.com/news/156797.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java 网络编程总结
    目录1、IP地址2、端口3、通信协议3.1 TCP/IP协议簇:实际上是一组协议3.2 TCP UDP对比3.3 TCP实现聊天3.4 TCP文件上传3.5 UDP消息发送3.6 U...
    99+
    2024-04-02
  • Java经典面试题汇总:网络编程
    目录1. HTTP 响应码 301 和 302 代表的是什么?有什么区别?2. 简单说一下http协议?3. HTTP与HTTPS的区别?4. HTTP协议下客户端请求报文是什么?5...
    99+
    2024-04-02
  • Java 网络编程
    Java 网络编程   目录 Java 网络编程   Socket 编程 ServerSocket 类的方法 Socket 类的方法   InetAddress 类的方法 Socket 客户端实例 Socket 服务端实例     网络编...
    99+
    2023-10-09
    java
  • Java网络编程 - 网络编程介绍 - 网络通信三要素
    文章目录 网络编程网络编程介绍网络通信三要素要素一: IP地址IP地址基本介绍IP地址的操作类 要素二: 端口号要素三: 协议TCP协议UDP协议 网络编程 网络...
    99+
    2023-09-07
    网络 java 网络协议
  • 详解Java网络编程
    目录一、网络编程1.1、概述1.2、计算机网络基础1.3、网络通信要素概述1.4、IP地址和端口号(组合就是网络套接字)1.5、网络协议1.6、三次握手与四次挥手二、TCP网络编程2...
    99+
    2024-04-02
  • Java 网络编程基础
    文章目录 前言什么是网络编程网络编程基础知识网络通讯流程长连接和短连接Socket Java 网络编程总结 前言 一个网络请求、服务之间的调用都需要进行网络通讯,在日常开发时我们可能并不会关心我们的服务端是怎么接收到请求的、...
    99+
    2023-08-16
    java 网络 开发语言
  • Java 函数式编程要点总结
    目录一、函数式概念二、函数与方法三、JDK函数基础1、Lambda表达式2、函数式接口四、Optional类1、Null判断2、Optional应用五、Stream流六、源代码地址一...
    99+
    2024-04-02
  • java编程之递归算法总结
    1.何为递归个人理解就是自己调用自己,直到满足一个条件结束自己调用自己的过程,这个就是递归。举一个通俗的点的例子:假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问前一排的人「你坐在哪一排?」,这样前面的人 ...
    99+
    2023-05-30
    java 递归算法 ava
  • Java 网络编程socket编程等详解
    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net包中J2SE的API包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。java.net包中...
    99+
    2023-05-31
    java 网络编程 socket编程
  • Java网络编程 - UDP通信
    文章目录 UDP通信快速入门一发一收多发多收广播组播 UDP通信 快速入门 UDP协议的特点: UDP是一种无连接、不可靠传输的协议。 将数据源IP、目的地IP和端口以及数据封装成数据包,大小限制在64KB内,直...
    99+
    2023-08-30
    java 网络 udp
  • Java网络编程 - TCP通信
    文章目录 TCP通信快速入门(一发一收)编写客户端代码编写服务器代码 多发多收多发多收(同时接受多个客户端)线程池优化 TCP通信 快速入门(一发一收) TCP协议回顾: TCP是一种面向连接,安全、可靠的...
    99+
    2023-08-16
    网络 tcp/ip java
  • Java网络编程的终结者:一劳永逸解决你的网络难题
    Java是一个强大的编程语言,非常适合开发网络应用程序。它提供了一系列全面的类库和工具,使开发人员能够轻松建立可靠且高效的网络应用程序。然而,网络编程可能是一个复杂的过程,开发人员经常会遇到各种问题。本文旨在深入探讨Java网络编程中常...
    99+
    2024-03-15
    网络编程
  • Java网络编程之UDP网络通信详解
    目录1.UDP网络通信编程原理1.1 UDP网络通信编程介绍1.2 UDP网络通信编程的基本流程2.UDP网络通信编程案例1.UDP网络通信编程原理 1.1 UDP网络通信编程介绍 ...
    99+
    2024-04-02
  • java 高级网络编程:advanced java networking
    java 高级网络编程:advanced java networking: Detail:java 高级网络编程:advanced java networking[@more@]...
    99+
    2023-06-03
  • JAVA编程中的反射用法总结
    本篇内容主要讲解“JAVA编程中的反射用法总结”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JAVA编程中的反射用法总结”吧!目录下面对Java反射的基础知识进行说明和总结:总结下面对Java反...
    99+
    2023-06-20
  • Python 网络爬虫干货总结
      爬取 对于爬取来说,我们需要学会使用不同的方法来应对不同情景下的数据抓取任务。 爬取的目标绝大多数情况下要么是网页,要么是 App,所以这里就分为这两个大类别来进行了介绍。 对于网页来说,我又将其划分为了两种类别,即服务端渲染和...
    99+
    2023-01-31
    干货 爬虫 网络
  • Java网络编程之入门篇
    目录一、网络基础二、网络协议URL类一、网络基础   二、网络协议 实现TCP的网络编程 例子1:客户端发送信息给服务端,服务端将数据显示在控制台上 p...
    99+
    2024-04-02
  • Java网络编程:纵横网络四海的利器
    主要特性: 协议支持:Java支持广泛的网络协议,包括TCP、UDP、HTTP和FTP,使开发者能够构建各种网络应用程序。 面向对象:Java网络编程遵循面向对象编程原则,提供了一组易于使用的类和接口,简化了网络操作的实现。 多线程:J...
    99+
    2024-03-15
    网络编程
  • 新手初学Java网络编程
    目录运行线程回调同步方法同步块死锁优先级暂停可以对IO阻塞可以对同步对象阻塞可以放弃可以休眠可以连接另一个线程可以等待一个对象可以结束可以被更高优先级线程抢占总结运行线程 创建Thr...
    99+
    2024-04-02
  • 网络编程
    1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络编程...
    99+
    2023-08-30
    网络 Java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作