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

JAVA学习-练习试用Java实现“网络编程”

问题:

编写一个简单的Java客户端和服务器程序,实现基本的网络通信,如发送和接收消息。

解答思路:

以下是一个简单的Java客户端和服务器程序,实现了基本的网络通信。服务器端监听客户端的连接请求,并接收发送的消息;客户端连接到服务器并发送消息,服务器接收消息并打印出来。

首先是服务器端的代码:

import java.io.*;import java.net.*;public class SimpleServer {public static void main(String[] args) {try (ServerSocket serverSocket = new ServerSocket(1234)) {System.out.println("Server is listening on port 1234");Socket socket = serverSocket.accept();System.out.println("New client connected");// Get input and output streamsBufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter output = new PrintWriter(socket.getOutputStream(), true);String clientMessage, serverMessage;while ((clientMessage = input.readLine()) != null) {System.out.println("Received: " + clientMessage);serverMessage = "Echo from server: " + clientMessage;output.println(serverMessage);}} catch (IOException e) {e.printStackTrace();}}}

接下来是客户端的代码:

import java.io.*;import java.net.*;public class SimpleClient {public static void main(String[] args) {String hostname = "localhost"; // 服务器的主机名或IP地址int port = 1234; // 服务器监听的端口号try (Socket socket = new Socket(hostname, port);PrintWriter out = new PrintWriter(socket.getOutputStream(), true);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) {System.out.println("Connected to server");String userInput;while ((userInput = stdIn.readLine()) != null) {out.println(userInput);System.out.println("Server response: " + in.readLine());}} catch (IOException e) {e.printStackTrace();}}}

要运行这个简单的网络通信程序,需按照以下步骤操作:

1. 将服务器端代码保存为'SimpleServer.java',并编译它:'javac SimpleServer.java'。

2. 将客户端代码保存为'SimpleClient.java',并编译它:'javac SimpleClient.java'。

3. 在一个新的命令行窗口中,运行服务器程序:'java SimpleServer'。

4. 在另一个命令行窗口中,运行客户端程序:'java SimpleClient'。

5. 在客户端的命令行中输入消息,然后按Enter键。服务器将接收这个消息,并回显(echo)同样的消息给客户端。

请确保服务器和客户端运行在不同的命令行窗口中,并且客户端的主机名和端口号与服务器匹配。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)


http://www.mrgr.cn/news/75440.html

相关文章:

  • 使用windows批处理,解决多个svn库提交和更新的需求
  • 【C++学习(37)】并发性模式:如生产者-消费者、读写锁等。 架构模式:如MVC、MVVM等。属于23 种设计模式吗? RAII 的关系?
  • ⚡️如何在 React 和 Next.js 项目里优雅的使用 Zustand
  • 基于ZYNQ7035的PS-linux实现FTP服务器移植
  • 在 .NET 6.0 中创建用于 CRUD 操作的 Web API
  • Python并发编程入门:使用concurrent.futures与asyncio
  • 【大数据技术基础 | 实验十一】Hive实验:新建Hive表
  • 性能调优专题(9)之从JDK源码级别解析JVM类加载机制
  • 【汇编语言】包含多个段的程序(一)—— 在代码段中使用数据和栈
  • 无需魔法的AI绘图神器,不能错过的宝藏软件!
  • Android 无签名系统 debug 版本APK push到设备引起的开机异常问题分析(zygote进程)
  • 双十二有什么好物推荐?盘点2024年双十二最值得入手的好物!
  • P3372 【模板】线段树 1
  • 大模型重塑软件研发,从辅助编程到多 Agent 协同还有多远?
  • WSADATA 关键字详细介绍
  • 用EXCEL一列数据拼接SQL的where条件in语句
  • 使用Python实现智能食品储存管理的深度学习模型
  • 快速上手 Hugging Face Transformers:完整模型微调训练步骤全攻略
  • 历久弥新的c-Met:靶向疗法研究进展
  • 【route】route add命令详解
  • 去中心化应用(DApps)在Web3生态中的发展趋势
  • 大模型时代,呼叫中心的呼入机器人系统如何建设?
  • 【Visual Studio】使用VS调试(Debug)
  • APEX高性能减速机MG/MGH系列 高负载应用下的精准动力传输
  • 2024年11月14日
  • 如何有效的解决LabVIEW项目中的问题?