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

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 streams

            BufferedReader 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.kler.cn/a/395718.html

相关文章:

  • Flink Job更新和恢复
  • 使用c#实现TCP客户端与服务器端
  • 数据结构--数组
  • 基于node一键发布到服务器的js脚本
  • 【项目组件】第三方库——websocketpp
  • 利用编程语言和脚本编写技术,实现自动化渗透测试和安全工具的开发
  • LlamaFactory介绍
  • Java爬虫:获取商品历史价格信息 API 数据
  • 英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2
  • CTF攻防世界小白刷题自学笔记12
  • 企业生产环境-麒麟V10(ARM架构)操作系统部署kafka高可用集群
  • Lambda常用方法
  • Kafka、RabbitMQ、RocketMQ对比
  • 开源对象存储新选择:在Docker上部署MinIO并实现远程管理
  • sql在按照当前表查询返回
  • 聊天服务器(9)一对一聊天功能
  • 求10000以内n的阶乘
  • SpringBoot开发——整合AJ-Captcha实现安全高效的滑动验证码
  • day-82 最少翻转次数使二进制矩阵回文 I
  • SQL LEFT JOIN 简介
  • windbg的线程信息dt命令
  • 前端项目一键打包自动部署2.0版本
  • Linux故障排查中常用的命令
  • idea 实现版本的切换
  • Java 使用MyBatis-Plus数据操作关键字冲突报错You have an error in your SQL syntax问题
  • linux逻辑卷练习