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

免费制作手机网站百度账号注册申请

免费制作手机网站,百度账号注册申请,wordpress商品分销,seo查询站长工具Java 中通信接口 1、Java UDP 通信核心接口介绍1、DatagramSocket 类2、DatagramPacket 类3、UDP客户端与UDP服务器通信例子 2、Java TCP 通信核心接口介绍1、ServerSocket 类2、Socket 类3、输入输出流常见包装类4、TCP 客户端与 TCP 服务器通信例子 Java 网络通信基于 Socket…

Java 中通信接口

  • 1、Java UDP 通信核心接口介绍
    • 1、DatagramSocket 类
    • 2、DatagramPacket 类
    • 3、UDP客户端与UDP服务器通信例子
  • 2、Java TCP 通信核心接口介绍
    • 1、ServerSocket 类
    • 2、Socket 类
    • 3、输入输出流常见包装类
    • 4、TCP 客户端与 TCP 服务器通信例子

Java 网络通信基于 Socket(套接字) 编程,分为两大类:

协议特点
TCPSocket, ServerSocket面向连接、可靠、数据顺序、有流控制
UDPDatagramSocket, DatagramPacket无连接、不可靠、快速、无序、面向数据报

1、Java UDP 通信核心接口介绍

你这个程序使用的是 UDP 协议,使用类有:

DatagramSocket:用于发送和接收数据包(Socket 实例)

DatagramPacket:用于封装发送或接收的数据内容

1、DatagramSocket 类

这个类代表一个 UDP 套接字(Socket),可以发送或接收 DatagramPacket

DatagramSocket socket = new DatagramSocket();         // 客户端:系统自动分配本地端口
DatagramSocket socket = new DatagramSocket(port);     // 服务器:绑定到指定端口
方法说明
send(DatagramPacket p)发送一个数据报
receive(DatagramPacket p)接收一个数据报(阻塞)
close()关闭套接字,释放端口

UDP 是无连接的通信,所以只需要发送和接收数据报,不需要建立连接。

2、DatagramPacket 类

这个类是一个 数据包容器,既可以用于发送数据,也可以用于接收数据。

发送端构造方法:

DatagramPacket packet = new DatagramPacket(byte[] buf, int length, InetAddress address, int port);
参数说明
buf要发送的数据字节数组
length字节数组长度
address目标主机地址(InetAddress.getByName(“127.0.0.1”))
port目标端口号

接收端构造方法:

DatagramPacket packet = new DatagramPacket(byte[] buf, int length);
参数说明
buf用来接收数据的字节数组
length缓冲区大小

常用方法:

方法说明
getData()获取数据字节数组(包含整个缓冲区)
getLength()获取实际接收到的数据长度
getSocketAddress()获取发送方的地址和端口
getAddress() / getPort()获取 IP 地址 / 端口号

3、UDP客户端与UDP服务器通信例子

下面是简单清晰的 UDP 客户端与服务器通信例子:

UdpEchoServer.java(服务器

package thread;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class UdpEchoServer {public static void main(String[] args) throws IOException {// 创建 DatagramSocket,绑定端口 9090DatagramSocket socket = new DatagramSocket(9090);System.out.println("服务器已启动,监听端口 9090...");while (true) {// 接收客户端发来的数据包byte[] buffer = new byte[1024]; // 缓冲区DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);socket.receive(receivePacket);  // 阻塞接收// 读取数据内容String message = new String(receivePacket.getData(), 0, receivePacket.getLength());System.out.println("收到客户端消息:" + message);// 构造响应内容(原样返回加上后缀)String response = "回显:" + message;byte[] responseData = response.getBytes();// 构造响应数据包,目标为收到的客户端地址和端口DatagramPacket responsePacket = new DatagramPacket(responseData,responseData.length,receivePacket.getAddress(),receivePacket.getPort());// 发送响应数据包socket.send(responsePacket);}}
}

UdpEchoClient.java(客户端

package thread;import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class UdpEchoClient {public static void main(String[] args) throws IOException {// 创建 DatagramSocket,系统自动分配端口DatagramSocket socket = new DatagramSocket();// 服务器地址和端口InetAddress serverAddress = InetAddress.getByName("127.0.0.1");int serverPort = 9090;Scanner scanner = new Scanner(System.in);System.out.println("请输入内容,输入 exit 退出:");while (true) {System.out.print(">> ");String input = scanner.nextLine();if ("exit".equalsIgnoreCase(input)) {break;}// 构造发送数据包byte[] data = input.getBytes();DatagramPacket sendPacket = new DatagramPacket(data, data.length, serverAddress, serverPort);socket.send(sendPacket);// 接收服务器响应byte[] buffer = new byte[1024];DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);socket.receive(receivePacket);// 打印响应String response = new String(receivePacket.getData(), 0, receivePacket.getLength());System.out.println("来自服务器:" + response);}socket.close();}
}

2、Java TCP 通信核心接口介绍

Java 中使用 TCP 协议 通信的主要类有:

Socket:表示客户端或服务端通信时的“套接字”

ServerSocket:服务端专用,用于监听客户端连接请求

1、ServerSocket 类

ServerSocket 是服务端用来监听某个端口的类,接收到连接请求后会生成 Socket 进行数据通信。

构造方法:

ServerSocket serverSocket = new ServerSocket(port); // 监听指定端口

常用方法:

方法说明
accept()接收客户端连接,返回一个 Socket,阻塞方法
close()关闭监听,释放端口资源

说明accept() 是阻塞的,直到有客户端连接才会继续执行。

2、Socket 类

Socket 表示客户端套接字,也用于服务端与某个客户端通信的 Socket 实例。

构造方法(客户端使用)

ServerSocket serverSocket = new ServerSocket(port); // 监听指定端口

常用方法:

方法说明
getInputStream()获取输入流,用于读取数据(来自对方)
getOutputStream()获取输出流,用于发送数据(给对方)
close()关闭连接

3、输入输出流常见包装类

包装类组合用途
InputStreamReader + BufferedReader读取字符串(按行读取)
OutputStream + PrintWriter发送字符串(可自动 flush)

4、TCP 客户端与 TCP 服务器通信例子

TCP 服务器(TcpEchoServer.java)

package thread;import java.io.*;
import java.net.*;public class TcpEchoServer {public static void main(String[] args) throws IOException {// 1. 创建 ServerSocket,监听端口 9090ServerSocket serverSocket = new ServerSocket(9090);System.out.println("TCP服务器启动,监听端口 9090...");// 2. 等待客户端连接(阻塞)Socket clientSocket = serverSocket.accept();System.out.println("客户端已连接:" + clientSocket.getRemoteSocketAddress());// 3. 获取输入输出流BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true); // 自动刷新// 4. 循环读取客户端消息并回显String message;while ((message = reader.readLine()) != null) {System.out.println("客户端说:" + message);writer.println("回显:" + message);}// 5. 关闭连接reader.close();writer.close();clientSocket.close();serverSocket.close();}
}

TCP 客户端(TcpEchoClient.java)

package thread;import java.io.*;
import java.net.*;
import java.util.Scanner;public class TcpEchoClient {public static void main(String[] args) throws IOException {// 1. 创建 Socket,连接到服务器Socket socket = new Socket("127.0.0.1", 9090);System.out.println("已连接到服务器!");// 2. 获取输入输出流BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); // 自动刷新Scanner scanner = new Scanner(System.in);System.out.println("请输入要发送的内容,输入 exit 退出:");// 3. 发送和接收消息while (true) {System.out.print(">> ");String input = scanner.nextLine();if ("exit".equalsIgnoreCase(input)) {break;}writer.println(input); // 发送数据String response = reader.readLine(); // 接收响应System.out.println("服务器回复:" + response);}// 4. 关闭连接socket.close();}
}
http://www.dtcms.com/wzjs/287082.html

相关文章:

  • i岗网站建设百度网盘官网
  • 建设一个购物网站的费用seo网站优化系统
  • iis 网站无法访问百度网盘资源搜索
  • 企业app商城开发网站建设seo策略
  • 公安科技信息化建设 素材 网站seo投放
  • 萧山网站建设那家好江苏泰州seo网络优化推广
  • 怎样介绍自己做的网站宁波seo在线优化
  • 淘宝网站制作建设是真的吗广西壮族自治区在线seo关键词排名优化
  • 杭州网站制作方法互联网舆情监控系统
  • 网站建设001爱站网关键词密度查询
  • 建设企业网站找谁seo免费优化网址软件
  • 做商城网站哪个好企业产品营销策划推广
  • 做公司网站需要什么资料税收大数据
  • 别人做网站要把什么要过来网络营销方案
  • 电商网站怎么做聚合重庆关键词seo排名
  • wordpress浮动社交徐州seo顾问
  • 深圳龙岗疫情最新消息今天手机优化专家
  • 简易的网站制作软件开发app制作公司
  • wordpress多域名移动主题株洲企业seo优化
  • 北京网站怎么优化广西seo公司
  • 网站建设用英语怎么说怎么下载需要会员的网站视频
  • 网站页面术语六年级下册数学优化设计答案
  • 网站日志如何分析今日头条热点新闻
  • 用cms创建自己带数据库的网站和在本机搭建网站运行平台的心得体会蜘蛛seo超级外链工具
  • 肇庆网站制作软件百度推广电话客服24小时
  • 厦门做个网站多少钱网站申请
  • 校园网站建设结论搜狗引擎
  • 网站建设日程零基础怎么做电商
  • 天津河北做网站的公司营销模式100个经典案例
  • 站长工具端口查询百度app打开