建设导航网站晋城购物网站开发设计

张小明 2026/1/7 16:17:39
建设导航网站,晋城购物网站开发设计,有了源代码如何做网站,2345电脑版网址导航第一部分#xff1a;为什么是java#xff1f;如何在liunx上安装java#xff1f;最核心的一点#xff1a;java“一次编写#xff0c;到处运行” 的理念给予了它极为优异的跨平台性能。Java 支持 Linux、Windows、ARM/x86 等环境#xff0c;并与 Kubernetes、Docker 无缝集…第一部分为什么是java如何在liunx上安装java最核心的一点java“一次编写到处运行” 的理念给予了它极为优异的跨平台性能。Java 支持 Linux、Windows、ARM/x86 等环境并与 Kubernetes、Docker 无缝集成。只要你的电脑上安装了java jdk环境无论是Windows还是liunx都可以运行java应用所以我们的第一步就是为服务器配置java环境方法一使用宝塔面板安装java jdk在软件商店中搜索“java环境管理器”然后下载安装完成后打开它再选择相应版本安装即可。方法二在终端进行操作这里以Ubuntu系统安装java17为例sudo apt update sudo apt install openjdk-17-jdk -y无论哪种方法在安装完成后都可以查询java版本验证java -version如果安装成功终端会输出如下信息第二部分基于WebSocket的服务器通信原理及简单的信息处理尝试我们现在知道服务器的ip了那我们该如何让我们的本地计算机链接到它呢答案是使用WebSocket。WebSocket是一种重要的网络通信协议属于传输层之上的应用层协议提供全双工通信通道允许客户端与服务器双向传输数据提供了一套api接口来使计算机之间能够建立链接。几乎所有的编程语言都支持WebSocket。我们熟知的spring框架中的spring WebSocket就是对前者的封装。在实际应用中我们需要根据实际情况来选择使用WebSocket还是spring WebSocketWebSocket虽然在编程调用上比较麻烦但功能可扩展性高。原生 WebSocket 支持通过 RFC 6455 定义的扩展机制如permessage-deflate压缩、心跳检测动态增强协议功能适用于需要深度定制的场景如高吞吐量二进制数据传输。Spring WebSocket在编程使用的简便性上更优相应的它的扩展灵活性相对弱于前者。Spring WebSocket 通过MessageMapping、SubscribeMapping等注解将消息路由和处理逻辑封装为类似 Spring MVC 的声明式编程模型开发者无需手动处理连接生命周期如onopen、onmessage事件或底层帧解析。具体到通信协议中的TCP协议、UDP协议等等我们后面再详细去讲简单来说这些协议规定了客户端与服务器之间谁怎样发送数据谁又如何接收数据等等。接下来我们讲解基于WebSocket的服务器通信实现功能的关键字段为方便读代码这些代码简化去除了异常处理类假定我们要实现的功能是客户端发送两个数字A和B服务器返回CAB代码分为服务器端cloud与客户端local完整代码在放在最后第一步在本地构造一个包含了服务器ip与端口的local//local.java public local(String serverIp, int serverPort) { this.serverIp serverIp; //服务器ip this.serverPort serverPort; //服务器端口 }第二步创建socket在客户端的服务进程//local.java public int sendAndProcessData(int a, int b) throws IOException { Socket socket new Socket(serverIp, serverPort); // 创建实例化客户端套接字连接到指定IP地址和端口的服务器 PrintWriter out new PrintWriter(socket.getOutputStream(), true); // 获取套接字的输出流用于向服务器发送数据 BufferedReader in new BufferedReader(new InputStreamReader(socket.getInputStream())); // 获取套接字的输入流用于读取服务器返回的数据第三步创建socket在服务器的进程//cloud.java public void start() throws IOException { serverSocket new ServerSocket(port); //创建实例化一个服务器套接字监听指定端口 System.out.println(服务器启动监听端口: port); while (true) { Socket clientSocket serverSocket.accept(); // 等待客户端连接请求当有客户端连接时返回客户端套接字 System.out.println(客户端已连接: clientSocket.getInetAddress()); //在建立连接后输出日志客户端ip new ClientHandler(clientSocket).start(); // 创建新线程处理客户端请求 } }第四步编写服务器与客户端的数据处理逻辑//cloud.java private static class ClientHandler extends Thread { private Socket clientSocket; public ClientHandler(Socket socket) { this.clientSocket socket; } Override public void run() { try ( BufferedReader in new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out new PrintWriter(clientSocket.getOutputStream(), true) ) { // 读取两个整数 String line in.readLine(); String[] numbers line.split(,); int a Integer.parseInt(numbers[0].trim()); int b Integer.parseInt(numbers[1].trim()); int c a b; // 返回计算结果 out.println(c); System.out.println(处理完成: a b c); clientSocket.close(); } catch (Exception e) { // 简化异常处理 } } }//local.java的sendAndProcessData的后半部分 // 发送数据A和B String requestData a , b; out.println(requestData); // 接收处理结果C String response in.readLine(); int result Integer.parseInt(response); // 关闭资源 in.close(); out.close(); socket.close(); return result; }最后一步编写服务器与客户端的主方法//local.java public static void main(String[] args) throws IOException { String serverIp xxx.xxx.xxx.xxx; //替换为你的服务器的ip int serverPort 1234; //注意别忘了放通服务器防火墙 local client new local(serverIp, serverPort); int a 10; int b 20; int c client.sendAndProcessData(a, b); System.out.println(发送数据: A a , B b); System.out.println(接收结果: C c); }//cloud.java public static void main(String[] args) throws IOException { cloud server new cloud(1234); // 一定一定要使用与客户端相同的端口号 server.start(); }我们来试运行一下代码先将cloud.java上传到你的服务器当中再在服务器终端上使用java指令运行cloud.java再在本地运行local.java本地终端输出服务器终端输出涂红部分是客户端ip可以体会到原生WebSocket确实在调用上比较麻烦在下一节中我们将研究如何使用spring来连接服务器。附本节原生WebSocket实现功能的代码客户端local.java// local.java package cloudtest; import java.io.*; import java.net.*; public class local { private String serverIp; private int serverPort; public local(String serverIp, int serverPort) { this.serverIp serverIp; this.serverPort serverPort; } public int sendAndProcessData(int a, int b) throws IOException { Socket socket new Socket(serverIp, serverPort); // 创建客户端套接字连接到指定IP地址和端口的服务器 PrintWriter out new PrintWriter(socket.getOutputStream(), true); // 获取套接字的输出流用于向服务器发送数据 BufferedReader in new BufferedReader(new InputStreamReader(socket.getInputStream())); // 获取套接字的输入流用于读取服务器返回的数据 // 发送数据A和B String requestData a , b; out.println(requestData); // 接收处理结果C String response in.readLine(); int result Integer.parseInt(response); // 关闭资源 in.close(); out.close(); socket.close(); return result; } public static void main(String[] args) throws IOException { String serverIp xxx.xxx.xxx.xxx; int serverPort 1234; local client new local(serverIp, serverPort); int a 10; int b 20; int c client.sendAndProcessData(a, b); System.out.println(发送数据: A a , B b); System.out.println(接收结果: C c); } }服务器cloud.java// cloud.java package cloudtest; import java.io.*; import java.net.*; public class cloud { private ServerSocket serverSocket; private int port; public cloud(int port) { this.port port; } public void start() throws IOException { serverSocket new ServerSocket(port); //创建实例化一个服务器套接字监听指定端口 System.out.println(服务器启动监听端口: port); while (true) { Socket clientSocket serverSocket.accept(); // 等待客户端连接请求当有客户端连接时返回客户端套接字 System.out.println(客户端已连接: clientSocket.getInetAddress()); new ClientHandler(clientSocket).start(); // 创建新线程处理客户端请求 } } // 客户端处理线程 private static class ClientHandler extends Thread { private Socket clientSocket; public ClientHandler(Socket socket) { this.clientSocket socket; } Override public void run() { try ( BufferedReader in new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out new PrintWriter(clientSocket.getOutputStream(), true) ) { // 读取两个整数 String line in.readLine(); String[] numbers line.split(,); int a Integer.parseInt(numbers[0].trim()); int b Integer.parseInt(numbers[1].trim()); int c a b; // 返回计算结果 out.println(c); System.out.println(处理完成: a b c); clientSocket.close(); } catch (Exception e) { // 简化异常处理 } } } public static void main(String[] args) throws IOException { cloud server new cloud(1234); // 使用与客户端相同的端口 server.start(); } }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

建设在线观看视频网站网站建设团队精神

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个极简的WiFi密码字典生成器原型,支持基本参数设置(如长度、字符集)和快速生成功能。要求代码精简,核心功能完整,能…

张小明 2025/12/30 8:42:18 网站建设

产品网站建设多少钱开发者

如何通过NPM安装扩展插件优化FaceFusion前端交互体验 在AI驱动的视觉创作时代,用户对人脸替换工具的期待早已超越“能用”——他们需要的是直观、灵活且可定制的操作体验。像 FaceFusion 这样的开源项目虽然算法强大,但其原始前端往往聚焦于核心功能实现…

张小明 2025/12/30 8:42:16 网站建设

网站首页设计多少钱俄罗斯乌克兰局势最新消息

Langchain-Chatchat 如何配置跨域资源共享(CORS)?API 安全实战解析 在企业级 AI 应用快速落地的今天,越来越多组织选择将大型语言模型(LLM)部署于本地环境,以保障数据隐私与合规性。Langchain-C…

张小明 2026/1/6 0:44:28 网站建设

工作心得体会感悟简短seo专员工作内容

Ollama模型量化技术减少Anything-LLM内存占用 在一台16GB内存的MacBook Air上流畅运行一个能理解百页PDF、支持多用户协作的企业级AI知识库系统,听起来像天方夜谭?但这正是如今借助Ollama模型量化与Anything-LLM组合所能实现的真实场景。 大语言模型&…

张小明 2025/12/29 19:05:48 网站建设

搭建网站平台如何做分录个人网站也要备案吗

简介 文章介绍了构建高质量Agent的六步完整方法论:1)用具体示例定义任务;2)设计操作流程(SOP);3)用提示词构建MVP;4)连接与编排;5)测试与迭代;6)部署扩展与优化。通过邮件代理案例,强调从小处着…

张小明 2025/12/30 2:32:30 网站建设

温州企业网站制作百度官网认证价格

纯手打,代码整理中,持续更新中^-^ 序号延用总结八 目录 16、朴素贝叶斯 16.1 什么是贝叶斯公式? 这些符号是什么意思? 我们来推导一下贝叶斯公式 16.2 贝叶斯公式经典实例:疾病的检测 场景: 问题&…

张小明 2026/1/6 4:33:22 网站建设