当前位置: 首页 > news >正文

网络编程 示例

InetAddress

package com.example.demo1;import java.net.InetAddress;
import java.net.UnknownHostException;public class a {public static void main(String[] args) {try {// 1. 使用主机名获取IP地址(以百度为例)InetAddress baiduAddr = InetAddress.getByName("www.baidu.com");System.out.println("百度主机名: " + baiduAddr.getHostName());  // getHostName()System.out.println("百度IP地址: " + baiduAddr.getHostAddress()); // getHostAddress()// 2. 使用IP地址字符串获取InetAddress对象(以本地回环地址为例)InetAddress localAddr = InetAddress.getByName("127.0.0.1");System.out.println("\n本地主机名: " + localAddr.getHostName()); System.out.println("本地IP地址: " + localAddr.getHostAddress());// 3. 直接获取本地主机的InetAddress对象(等价于getByName("localhost"))InetAddress localHost = InetAddress.getLocalHost();System.out.println("\n本机真实主机名: " + localHost.getHostName()); System.out.println("本机真实IP地址: " + localHost.getHostAddress());} catch (UnknownHostException e) {System.out.println("错误:无法解析主机地址 - " + e.getMessage());}}
}

UDP通信示例

 UDP数据发送端

package com.example.demo1;import java.net.*;public class UdpSender {public static void main(String[] args) {// 使用无参构造创建DatagramSocket(自动绑定本地可用端口)try (DatagramSocket senderSocket = new DatagramSocket()) {// 要发送的数据String message = "Hello UDP!";byte[] sendData = message.getBytes();// 创建数据包:目标地址(本机测试用127.0.0.1),目标端口8888InetAddress targetAddr = InetAddress.getByName("127.0.0.1");int targetPort = 8888;DatagramPacket sendPacket = new DatagramPacket(sendData,       // 数据缓冲区sendData.length,// 发送长度targetAddr,     // 目标地址targetPort      // 目标端口);// 发送数据报包senderSocket.send(sendPacket);System.out.println("UDP数据已发送:" + message);} catch (Exception e) {e.printStackTrace();}// try-with-resources自动调用close()关闭套接字}
}

 UDP数据接收端

package com.example.demo1;import java.net.*;public class UdpReceiver {public static void main(String[] args) {// 绑定8888端口(需与发送端目标端口一致)try (DatagramSocket receiverSocket = new DatagramSocket(8888)) {// 创建接收用的数据包(缓冲区大小1024字节)byte[] receiveBuf = new byte[1024];DatagramPacket receivePacket = new DatagramPacket(receiveBuf,     // 数据缓冲区receiveBuf.length // 最大接收长度);System.out.println("UDP接收端已启动,等待数据...");// 阻塞等待接收数据(会一直等待直到收到数据包)receiverSocket.receive(receivePacket);// 从数据包中提取实际接收的数据byte[] actualData = receivePacket.getData();    // 获取缓冲区int dataLength = receivePacket.getLength();     // 获取实际接收长度String receivedMessage = new String(actualData, 0, dataLength);System.out.println("收到UDP数据:" + receivedMessage);System.out.println("数据来自:" + receivePacket.getAddress() + ":" + receivePacket.getPort());} catch (Exception e) {e.printStackTrace();}// try-with-resources自动调用close()关闭套接字}
}

TCP通信示例

 TCP客户端

package com.example.demo1;import java.net.*;
import java.io.*;public class TcpClient {public static void main(String[] args) {// 连接本机8889端口的TCP服务器try (Socket clientSocket = new Socket("127.0.0.1", 8889)) {// 获取输出流(向服务器发送数据)OutputStream out = clientSocket.getOutputStream();String message = "Hello TCP!";out.write(message.getBytes());out.flush();  // 强制刷新缓冲区确保数据发送// 获取输入流(接收服务器响应)InputStream in = clientSocket.getInputStream();byte[] response = new byte[1024];int len = in.read(response);System.out.println("收到服务器响应:" + new String(response, 0, len));} catch (Exception e) {e.printStackTrace();}// Socket关闭时会自动关闭关联的流}
}

TCP服务器端

package com.example.demo1;import java.net.*;
import java.io.*;public class TcpServer {public static void main(String[] args) {// 绑定8889端口监听try (ServerSocket serverSocket = new ServerSocket(8889)) {System.out.println("TCP服务器已启动,等待连接...");// 阻塞等待客户端连接(返回客户端的Socket对象)try (Socket clientSocket = serverSocket.accept()) {// 获取输入流(接收客户端数据)InputStream in = clientSocket.getInputStream();byte[] request = new byte[1024];int len = in.read(request);System.out.println("收到客户端数据:" + new String(request, 0, len));// 获取输出流(向客户端发送响应)OutputStream out = clientSocket.getOutputStream();String response = "已收到你的消息!";out.write(response.getBytes());out.flush();} catch (IOException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();}}
}

http://www.dtcms.com/a/290984.html

相关文章:

  • A316-HF-DAC-V1:专业USB HiFi音频解码器评估板技术解析
  • Linux 文件操作详解:结构、系统调用、权限与实践
  • C语言-字符串数组
  • DL00691-基于深度学习的轴承表面缺陷目标检测含源码python
  • 【STM32】485接口原理
  • Jmeter如何做接口测试?
  • soft_err错误
  • 【C语言进阶】结构体练习:通讯录
  • OCR 赋能发票管理系统:守护医疗票据合规,让管理更智能
  • Milvus:开源向量数据库的初识
  • 第17章 基于AB实验的增长实践——沉淀想法:实验记忆
  • 基于deepseek的LORA微调
  • react-window 大数据列表和表格数据渲染组件之虚拟滚动
  • Neo4j graph database
  • 剖析Sully.ai:革新医疗领域的AI助手功能启示
  • 20. TaskExecutor与ResourceManager心跳
  • HTML前端颜色渐变动画完整指南
  • 处理excel/wps表格中数值格式的警告的工具和脚本
  • Python 进阶(五): Excel 基本操作
  • Android系统更新实现--OTA空中升级
  • Selenium 处理表单、弹窗与文件上传:从基础到实战
  • 杰发科技AC7840——硬件crc使用
  • 7月21号打卡
  • 破解哈希极化:基于主动路径规划的智算网络负载均衡方案
  • Shell 编程基础入门从认识到实战
  • OSS文件上传(三):断点续传
  • C语言关键字深度解析:从入门到精通
  • 数字ic后端设计从入门到精通12(含fusion compiler, tcl教学)全定制设计进阶
  • 【LeetCode数据结构】栈的应用——有效的括号问题详解
  • Centos安装最新docker以及ubuntu安装docker