博客
关于我
网络编程
阅读量:321 次
发布时间:2019-03-04

本文共 2820 字,大约阅读时间需要 9 分钟。

网络编程基础

1.1 网络通信协议

在计算机网络中,连接和通信的规则被称为网络通信协议。这些协议对数据的传输格式、传输速率和传输步骤等做了统一规定。最常用的协议是TCP/IP协议组,包括TCP和IP协议。

TCP/IP协议分为四层:

  • 链路层:定义物理传输通道,负责驱动和接口。
  • 网络层:处理数据分组和传输,使用IP、ICMP、IGMP协议。
  • 传输层:使用TCP或UDP协议进行通信,TCP是面向连接的协议,UDP是无连接的协议。
  • 应用层:提供网络服务,如HTTP、FTP、DNS等。

1.2 IP地址与端口号

IP地址用于标识计算机,目前普及的是IPv4,每个IP地址由4个字节组成。IPv6则由16个字节组成,解决了IPv4地址不足的问题。IP地址分为A、B、C类和特定地址如127.0.0.1(本地回环地址)。

端口号用于区分应用程序,范围是0-65535。常用端口号0-1023用于网络服务,1024以上用于用户应用。

1.3 InetAddress类

InetAddress类用于处理IP地址。常用方法包括:

  • getAddress():获取IP地址字节数组。
  • getByName(String host):通过主机名获取IP地址。
  • getHostAddress():获取IP地址字符串。
  • getHostName():获取主机名。

示例:

InetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost.getHostAddress());InetAddress baiDuAddress = InetAddress.getByName("www.baidu.com");System.out.println(baiDuAddress.getHostAddress());

1.4 UDP与TCP协议

UDP是无连接协议,通信时不建立连接,适合实时应用如视频会议。常用类包括DatagramSocket和DatagramPacket。

TCP是面向连接的协议,建立连接后确保数据可靠传输。连接过程包括三次握手建立连接,四次挥手断开连接。适合可靠数据传输,如文件下载。

2. UDP通信

2.1 UDP通信简介

UDP通信不建立连接,数据通过DatagramPacket封装发送或接收。发送端需要指定目标IP和端口,接收端只需接收数据。

2.2 DatagramPacket类

DatagramPacket用于封装UDP数据,构造方法有:

  • DatagramPacket(byte[] buf, int length)
  • DatagramPacket(byte[] buf, int offset, int length)
  • DatagramPacket(byte[] buf, int length, InetAddress addr, int port)
  • DatagramPacket(byte[] buf, int offset, int length, InetAddress addr, int port)

2.3 DatagramSocket类

DatagramSocket用于创建UDP发送端和接收端。构造方法有:

  • DatagramSocket()
  • DatagramSocket(int port)
  • DatagramSocket(int port, InetAddress addr)

示例:发送端:

DatagramSocket client = new DatagramSocket(7777);DatagramPacket packet = new DatagramPacket("Hello World".getBytes(), "localhost", 8888);client.send(packet);

接收端:

DatagramSocket receiver = new DatagramSocket(8888);byte[] buf = new byte[1024];DatagramPacket packet = new DatagramPacket(buf, buf.length);receiver.receive(packet);System.out.println(new String(packet.getData(), 0, packet.getLength()));

3. TCP通信

3.1 TCP通信简介

TCP通信建立连接,确保数据可靠传输。JDK提供ServerSocket和Socket类。

3.2 ServerSocket类

ServerSocket用于创建服务器端程序,常用构造方法:

  • ServerSocket()
  • ServerSocket(int port)
  • ServerSocket(int port, int backlog)
  • ServerSocket(int port, int backlog, InetAddress addr)

常用方法:

  • accept(): 等待客户端连接。
  • bind(SocketAddress endpoint)
  • isClosed()
  • close()

3.3 Socket类

Socket用于创建客户端程序,常用构造方法:

  • Socket()
  • Socket(String host, int port)
  • Socket(InetAddress address, int port)

常用方法:

  • getPort()
  • getInputStream()
  • getOutputStream()
  • close()

3.4 简单TCP编程

服务端:

ServerSocket server = new ServerSocket(7788);Socket clientSocket = server.accept();OutputStream os = clientSocket.getOutputStream();os.write("服务器响应".getBytes());os.close();clientSocket.close();

客户端:

Socket client = new Socket(InetAddress.getLocalHost(), 7788);InputStream is = client.getInputStream();byte[] buf = new byte[1024];int len = is.read(buf);System.out.println(new String(buf, 0, len));is.close();client.close();

通过以上方法,可以实现TCP和UDP通信,适用于不同场景的网络编程需求。

转载地址:http://bghq.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
查看>>
OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
查看>>
OpenCV与AI深度学习 | 实战 | 使用姿态估计算法构建简单的健身训练辅助应用程序
查看>>
OpenCV与AI深度学习 | 实战 | 基于OpenCV和K-Means聚类实现颜色分割(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
查看>>
OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
查看>>
OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
查看>>
OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
查看>>
OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
查看>>
OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 水下检测+扩散模型:或成明年CVPR最大惊喜!
查看>>
OpenCV与AI深度学习 | 深度学习检测小目标常用方法
查看>>
OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
查看>>
OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用
查看>>
OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)
查看>>