【Java (一:11) 网络编程学习】
创始人
2025-05-30 13:59:04
0

网络编程学习

  • 一、网络编程
    • 1.网络编程三要素
    • 2.IP地址常用命令
    • 3. InetAddress类
  • 二、UDP通讯程序
    • 1.UDP发送数据
    • 2.UDP接受数据
    • 3.UDP_practice
      • 3.1 发送端
      • 3.2 接受端
    • 4.UDP的三种通信方式
      • 4.1 单播代码实现
      • 4.2 组播代码实现
      • 4.3 广播代码实现
  • 三、TCP通讯程序
    • 1.TCP通讯
      • 1.1 TCP发送数据
      • 1.2 TCP接受数据
    • 2.TCP 执行流程
    • 3.TCP三次握手
    • 4.TCP四次挥手
    • 4.TCP_practice

一、网络编程

1.网络编程三要素

在网络通信协议下。不同计算机上运行的程序,可以进行数据传输
在这里插入图片描述

2.IP地址常用命令

  1. ipconfig
  2. Ping ip地址:检查网络是否连通
  3. 127.0.0.1 本地IP地址

3. InetAddress类


import java.net.InetAddress;
import java.net.UnknownHostException;public class Demo1 {public static void main(String[] args) throws UnknownHostException {InetAddress address=InetAddress.getByName("zfz");String hostName = address.getHostName();System.out.println("主机名为:"+hostName);String hostAddress = address.getHostAddress();System.out.println("Ip为:"+hostAddress);}
}

二、UDP通讯程序

1.UDP发送数据

在这里插入图片描述
在这里插入图片描述


import java.io.IOException;
import java.net.*;public class ClientDemo {public static void main(String[] args) throws IOException {//1.找码头DatagramSocket ds=new DatagramSocket();//2.打包数据// public DatagramPacket(byte[] buf, int length, InetAddress address, int port)String  str="朋友送的  好烟 好酒 好茶";byte[] bytes = str.getBytes();InetAddress address=InetAddress.getByName("127.0.0.1");int port=10000;DatagramPacket dp=new DatagramPacket(bytes,bytes.length,address,port);//3.发送数据ds.send(dp);//发送完成ds.close();}
}

2.UDP接受数据

在这里插入图片描述


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class ServerDemo {/*** 注意点:* 1. 要先运行接收端 再运行发送端* 2. 如果接收端再启动之后,没有收到数据 ,就会死等(阻塞状态)* 3. 在接受数据时 可以调用getLength方法,表示接收到了多少字节* 4.*/public static void main(String[] args) throws IOException {//1.找码头//表示接受端从10000端口接受数据DatagramSocket ds=new DatagramSocket(10000);//2.创建接受数据的箱子//  public DatagramPacket(byte[] buf, int length)byte bytes[]=new byte[1024];DatagramPacket dp=new DatagramPacket(bytes,bytes.length);//3.接受数据并放到箱子中System.out.println("--------接受前--------");ds.receive(dp);System.out.println("--------接受后--------");//4.从箱子中拿出数据//byte [] data=dp.getData();int length=dp.getLength();System.out.println(new String(bytes,0,length));//5.接受完成ds.close();}
}

在这里插入图片描述

3.UDP_practice

3.1 发送端

import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class ClientDemo {public static void main(String[] args) throws IOException {Scanner sc=new Scanner(System.in);DatagramSocket ds=new DatagramSocket();while (true) {String str=sc.nextLine();if (str.equals("886")){break;}byte[] bytes = str.getBytes();InetAddress address=InetAddress.getByName("127.0.0.1");int port=10000;DatagramPacket dp=new DatagramPacket(bytes,bytes.length,address,port);ds.send(dp);}ds.close();}
}

3.2 接受端


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class ServerDemo {public static void main(String[] args) throws IOException {DatagramSocket ds=new DatagramSocket(10000);while (true) {byte bytes[]=new byte[1024];DatagramPacket dp=new DatagramPacket(bytes,bytes.length);ds.receive(dp);int length=dp.getLength();System.out.println(new String(bytes,0,length));}}
}

4.UDP的三种通信方式

在这里插入图片描述

4.1 单播代码实现


import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class ClientDemo {public static void main(String[] args) throws IOException {Scanner sc=new Scanner(System.in);DatagramSocket ds=new DatagramSocket();while (true) {String str=sc.nextLine();if (str.equals("886")){break;}byte[] bytes = str.getBytes();InetAddress address=InetAddress.getByName("127.0.0.1");int port=10000;DatagramPacket dp=new DatagramPacket(bytes,bytes.length,address,port);ds.send(dp);}ds.close();}
}import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class ServerDemo {public static void main(String[] args) throws IOException {DatagramSocket ds=new DatagramSocket(10000);while (true) {byte bytes[]=new byte[1024];DatagramPacket dp=new DatagramPacket(bytes,bytes.length);ds.receive(dp);int length=dp.getLength();System.out.println(new String(bytes,0,length));}}
}

4.2 组播代码实现


import java.io.IOException;
import java.net.*;
public class ClientDemo {public static void main(String[] args) throws IOException {DatagramSocket ds = new DatagramSocket();String str = "组播转发";byte[] bytes = str.getBytes();InetAddress address = InetAddress.getByName("224.0.1.0");int port = 10000;DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);ds.send(dp);ds.close();}
}import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class ServerDemo {public static void main(String[] args) throws IOException {MulticastSocket ms=new MulticastSocket(10000);DatagramPacket dp=new DatagramPacket(new byte[1024],1024);//把当前计算机绑定一个组播地址,表示添加到这一组中ms.joinGroup(InetAddress.getByName("224.0.1.0"));ms.receive(dp);byte [] data=dp.getData();int length=dp.getLength();System.out.println(new String(data,0,length));}
}

4.3 广播代码实现


import java.io.IOException;
import java.net.*;
public class ClientDemo {public static void main(String[] args) throws IOException {DatagramSocket ds = new DatagramSocket();String str = " 广播转发";byte[] bytes = str.getBytes();InetAddress address = InetAddress.getByName("255.255.255.255");int port = 10000;DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);ds.send(dp);ds.close();}
}import java.io.IOException;
import java.net.DatagramPacket;import java.net.MulticastSocket;
public class ServerDemo {public static void main(String[] args) throws IOException {MulticastSocket ms=new MulticastSocket(10000);DatagramPacket dp=new DatagramPacket(new byte[1024],1024);//把当前计算机绑定一个组播地址,表示添加到这一组中ms.receive(dp);byte [] data=dp.getData();int length=dp.getLength();System.out.println(new String(data,0,length));}
}

三、TCP通讯程序

在这里插入图片描述

1.TCP通讯

1.1 TCP发送数据

在这里插入图片描述


import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;public class ClientDemo {public static void main(String[] args) throws IOException {//1.创建一个Socket对象Socket  socket=new Socket("127.0.0.1",10005);//2.获取IO流写数据OutputStream os = socket.getOutputStream();os.write("hello".getBytes());//3.释放资源os.close();socket.close();}
}

1.2 TCP接受数据

在这里插入图片描述


import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;public class ServerDemo {public static void main(String[] args) throws IOException {//1. 创建Socket对象ServerSocket socket=new ServerSocket(10005);//2. 等待客户端连接System.out.println("---------接受前--------");//socket.accept()开启服务后 阻塞状态 等待就收 死等ingSocket accept = socket.accept();System.out.println("---------接受后--------");//3.获得输入流都西昂InputStream in = accept.getInputStream();int b;//如果客户端不执行close关闭操作 则服务端read方法也是阻塞状态 一直等着读取,会认为读取数据未结束while ((b=in.read())!=-1){System.out.print((char)b);}//4.释放资源accept.close();socket.close();}
}

2.TCP 执行流程

在这里插入图片描述

3.TCP三次握手

三次握手简述:

  1. 第一次握手:客户端给服务器发送一个报文,告知服务器:客户端请求连接,服务器收到第一段报文后得出结论:客户端发送功能正常,服务器接收功能正常。
  2. 第二次握手:服务器收到报文后给客户端回复一个报文,告知客户端:“我服务器收到了你的请求,同意和你建立连接”。客户端收到第二段报文后得出结论:客户端发送和接收功能都正常,服务器的发送接收功能也都正常。(但此时服务器不能确认客户端的接收功能和自己的发送功能是否正常)。
  3. 第三次握手:客户端收到第二段报文后给服务器回复一个报文,告知服务器:“我客户端收到了你的回复,知道你同意连接,那我们开始连接吧!”服务器收到第三段报文后得出结论:客户端的接收功能和服务器的发送功能也都正常。所以当服务器收到第三个报文后,两边就建立起了TCP连接。

在这里插入图片描述

在这里插入图片描述

4.TCP四次挥手

在这里插入图片描述
在这里插入图片描述

4.TCP_practice

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...