【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

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...