【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

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...