欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > JAVA入门——网络编程简介

JAVA入门——网络编程简介

2025/3/9 10:44:31 来源:https://blog.csdn.net/2301_80216298/article/details/146028579  浏览:    关键词:JAVA入门——网络编程简介

自己学习时的笔记,可能有点水( 

以后可能还会补充(大概率不会)

一、基本概念

网络编程三要素:

  • IP
    • 设备在网络中的唯一标识
  • 端口号
    • 应用软件在设备中的唯一标识
    • 两个字节表示的整数,0~1023用于知名的网络服务和应用,其他的可以自己使用
    • 注意:一个端口号只能由一个应用程序使用
  • 协议
    • 数据在网络中的传输规则

IP细节

  • IPv4:互联网通信协议第四版,采取32位地址长度,分为四组,每组转成十进制,中间用“点”隔开,注意没有负数
    • 只有四十多亿个,2019年就不够用了,所以出现了IPv6
  • IPv4地址分类形式:
    • 公网地址
    • 私有地址(局域网)
      • 192.168.开头的地址
    • 特殊IP:127.0.0.1,本机IP,localhost
  • IPv6:采取128位地址长度,分成八组
    • 采取冒分十六进制表示法
    • 0位压缩法:如果中间有很多0,可以压缩不写
      • 例:FF01:0:0:0:0:0:0:FF02可以写成FF01::FF02

常用CMD命令

ipconfig:查看本机IP

ping:检查网络是否连通

二、InetAddress类的使用

public class MyInetAddressTest1 {public static void main(String[] args) throws UnknownHostException {//1.确定主机名称的IP地址InetAddress i = InetAddress.getByName("LAPTOP-8614VVAT");//填主机名或IP地址System.out.println(i);System.out.println(i.getHostName());System.out.println(i.getHostAddress());}
}

三、UDP协议

1.发送数据

UDP协议的发送,不管有没有建立连接都会发送,不一定能接收到

步骤:

  • 创建发送端的DatagramSocket对象
  • 数据打包(DatagramPacket)
  • 发送数据
  • 释放资源
import java.io.IOException;
import java.net.*;public class SendMessage {public static void main(String[] args) throws IOException {//1.创建对象//空参:随机使用一个端口进行发送//带参:指定端口号进行绑定DatagramSocket ds = new DatagramSocket();//2.打包数据String str = "114514王俊阳没有牛牛";byte[] bytes = str.getBytes();InetAddress address = InetAddress.getByName("127.0.0.1");//本机IPint port = 10086;//端口号//3.发送数据ds.send(new DatagramPacket(bytes,bytes.length,address,port));//4.释放资源ds.close();}
}

2.接收数据

步骤:

  • 创建接收端的DatagramSocket对象
  • 接收打包好的数据
  • 解析数据包
  • 释放资源

细节:

  • receive方法是阻塞的,会等待消息发送过来
  • 注意先启动接收端,再启动发送端
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class ReceiveMessage {public static void main(String[] args) throws IOException {//1.创建接收端口//注意:一定要绑定端口,并且绑定的端口要与发送端口保持一致DatagramSocket ds = new DatagramSocket(10086);//2.接收byte[] buf = new byte[1024];DatagramPacket dp = new DatagramPacket(buf, buf.length);ds.receive(dp);//3.解析数据包byte[] data = dp.getData();//获取发来的数据int len = dp.getLength();//发来多少数据int port = dp.getPort();//端口号InetAddress address = dp.getAddress();//IP地址System.out.println("接收到数据" + new String(data,0,len));System.out.println("该数据从" + address + "这台电脑中的" + port + "端口发出的");ds.close();}
}

3.UDP协议的三种通信方式

1.单播

  • 1对1发送与接收数据

2.组播

  • 给一组电脑发送信息
  • 组播地址:224.0.0.0~239.255.255.255
    • 其中224.0.0.0~224.0.0.255是预留地址,可以我们自己用
  • 创建对象时要创建MulticastSocket对象,指定InetAddress时要指定组播的地址

3.广播

  • 给局域网中所有电脑发送数据    
    • 地址:255.255.255.255

四、TCP协议

  • 一种可靠的网络协议,他会在通信的两端分别建立一个Socket对象
  • 通信前要保证连接已经建立
  • 通过Socket产生IO流来进行网络通讯

客户端步骤:

  • 创建Socket对象与指定服务端连接
    • Socket(String host,int port)
  • 获取输出流,写数据
    • OutputStream getOutputStream()
  • 释放资源
    • void clear()

服务器步骤:

  • 创建服务器端的Socket对象
    • ServerSocket(int port)
  • 监听客户端连接,返回一个Socket对象
    • Socket accept()
  • 从Socket对象中获取输入流,读数据,并把数据显示在控制台
    • InputStream getInputStream()
  • 释放资源
    • void clear()

三次握手和四次挥手:

  • 三次握手:为了保证连接的确立
    • 客户端向服务端发出连接请求,等待服务器确认
    • 服务器向客户端返回一个响应,告诉客户端收到了请求
    • 客户端向服务端再次发出确认信息,建立连接
  • 四次挥手:确保连接断开且数据处理完毕
    • 客户端向服务端发出取消链接请求
    • 服务端返回一个响应,表示受到请求
      • 此时不会断开,会将流中最后的数据处理完毕
    • 服务器向客户端发出确认取消的信息
    • 客户端再次发出确认信息,链接取消

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词