Java Socket实现单线程通信的方法示例

下面我会针对“Java Socket实现单线程通信的方法示例”的攻略进行详细解答。

1. 什么是Java Socket

Java Socket是一种用于网络编程的API,它提供了简单、高效的网络通信方式,允许程序通过网络连接来进行数据传输。

2. Java Socket实现单线程通信的方法

2.1 创建服务器

下面是一个简单的Java Socket服务器实现:

import java.net.*;
import java.io.*;

public class Server {
    private ServerSocket serverSocket;

    public Server(int port) throws IOException {
        serverSocket = new ServerSocket(port);
    }

    public void run() {
        while(true) {
            try {
                Socket socket = serverSocket.accept();
                DataInputStream in = new DataInputStream(socket.getInputStream());
                System.out.println(in.readUTF());
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());
                out.writeUTF("Thx for ur connection!");
                socket.close();
            } catch(IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws IOException {
        Server server = new Server(8888);
        server.run();
    }
}

以上代码中,首先创建了一个ServerSocket对象用于监听来自客户端的连接请求。当有客户端连接时,服务器会获取对应的输入流和输出流,然后进行通信。数据传输使用DataInputStreamDataOutputStream进行,这两个类经过封装可以很方便地进行数据读写操作。

2.2 创建客户端

下面是一个简单的Java Socket客户端:

import java.net.*;
import java.io.*;

public class Client {
    private Socket socket;

    public Client(String ip, int port) throws IOException {
        socket = new Socket(ip, port);
    }

    public void run() {
        try {
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            out.writeUTF("Hello from " + socket.getLocalSocketAddress());
            DataInputStream in = new DataInputStream(socket.getInputStream());
            System.out.println(in.readUTF());
            socket.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
        Client client = new Client("localhost", 8888);
        client.run();
    }
}

以上代码中,首先创建了一个Socket对象用于连接指定的服务器。连接成功后,客户端会获取对应的输入流和输出流,然后进行通信。数据传输也是使用DataInputStreamDataOutputStream进行,这两个类经过封装可以很方便地进行数据读写操作。

3. 程序的运行流程

  1. 先运行服务器程序,它会监听8888端口来接收来自客户端的请求。
  2. 运行客户端程序,它会向服务器8888端口发送一条消息。
  3. 服务器接收到客户端发送的消息后,会在控制台上输出消息内容,并向客户端发送一条回复消息。
  4. 客户端接收到服务器发送的回复消息后,在控制台上输出消息内容。
  5. 连接结束后,服务器和客户端都会关闭连接。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Socket实现单线程通信的方法示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringBoot和Redis实现Token权限认证的实例讲解

    下面我会为您介绍如何使用Spring Boot和Redis实现Token权限认证。 为什么使用Token认证? 在Web应用程序中,为了保护页面和API,需要用户进行登录并验证其身份。其中一种常用的方法是使用Token认证。在Token认证中,用户首先输入用户名和密码进行登录,验证成功后,服务器会返回一个Token令牌,将其存储在客户端。随后,客户端将该To…

    Java 2023年5月20日
    00
  • 在jmeter的beanshell中用java获取系统当前时间的简单实例

    下面我将详细讲解在JMeter的BeanShell中使用Java获取系统当前时间的简单实例,攻略如下: 1. 利用Java类获取时间戳 我们首先需要了解利用Java类获取时间戳的方式。在Java中,可以使用System.currentTimeMillis()方法获取当前时间的时间戳。具体实现如下: public class CurrentTime { pub…

    Java 2023年5月20日
    00
  • SpringBoot中异常处理实战记录

    接下来我就详细讲解一下“SpringBoot中异常处理实战记录”的完整攻略。 一、背景介绍 在SpringBoot的开发中,异常处理是必不可少的环节。在程序的运行过程中,可能会遇到各种异常,如数据库连接异常、空指针异常、参数异常等,这些异常如果没有有效的处理,会导致系统运行出错,甚至直接崩溃。因此,合理的异常处理是保证系统稳定性和高效性的重要一环。 二、异常…

    Java 2023年5月27日
    00
  • Java自定义实现equals()方法过程解析

    Java自定义实现equals()方法过程解析 什么是equals()方法? 在Java中,equals()方法是用于比较两个对象是否相等的方法。它是Object类中的方法,子类可以覆盖这个方法来实现自己的比较方式。一般来说,我们自定义的类需要重写equals方法,来比较类中的属性是否相等。 equals()方法的实现要点 在Java中重写equals方法时…

    Java 2023年5月18日
    00
  • SpringMVC中重定向model值的获取方式

    在SpringMVC中,重定向到页面时,我们想要将一些值传递给下一个页面,这些值需要被设置在model中。下面是完整攻略: 1. 在Controller中设置重定向的model值 在Controller中设置model值并将请求重定向到另一个页面时,我们需要使用RedirectAttributes接口。可以使用addAttribute()方法将值添加到mod…

    Java 2023年6月16日
    00
  • Spring Boot详解创建和运行基础流程

    Spring Boot是一个轻量级的Java开发框架,可以快速构建可独立运行的Spring应用程序,使得Spring应用程序的开发变得更加容易、更加快捷。下面是Spring Boot创建和运行基础流程的详细攻略。 创建Spring Boot项目 创建Spring Boot项目的最简单的方法是通过Spring官网提供的 Spring Initializr,该工…

    Java 2023年5月19日
    00
  • 使用spring aop 统一捕获异常和写日志的示例demo

    使用Spring AOP统一捕获异常和写日志可以提高程序的健壮性和可维护性,下面是示例demo的详细攻略: 一、添加依赖 在pom.xml中添加Spring AOP和Spring Boot Starter Logging的依赖: <dependency> <groupId>org.springframework.boot</gr…

    Java 2023年5月27日
    00
  • Springboot如何去掉URL后面的jsessionid

    要去掉Spring Boot应用程序中URL后的JSESSIONID,可以在servlet过滤器中进行配置,具体步骤如下: 创建一个过滤器类,并实现javax.servlet.Filter接口。 @Component public class JSessionIdFilter implements Filter { @Override public void…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部