Java Socket编程(二) Java面向连接的类

下面就是关于“Java Socket编程(二) Java面向连接的类”的完整攻略。

一、什么是面向连接的Socket

在Socket编程中,TCP协议是面向连接的协议,UDP协议是无连接的协议。面向连接的Socket需要先建立连接,数据传输完毕后还需要断开连接。

在Java中,面向连接的Socket通信使用的是java.net.Socket类和java.net.ServerSocket类。其中,Socket类代表客户端套接字,ServerSocket类代表服务器套接字。需要注意的是,ServerSocket只负责监听端口并等待客户端连接,一旦有客户端连接,就会创建一个新的Socket实例与客户端通信。

二、Socket步骤详解

  1. 创建ServerSocket对象并绑定端口

java
ServerSocket serverSocket = new ServerSocket(port);

其中,port是要绑定的端口号。

  1. 调用accept()方法并等待客户端连接

java
Socket socket = serverSocket.accept();

这会阻塞当前线程,直到有客户端连接或者发生异常。

  1. 获取客户端输入输出流,进行数据传输

java
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();

利用输入输出流进行数据的读取和写入。

  1. 断开连接

java
socket.close();
serverSocket.close();

数据传输完毕后要断开连接,先关闭Socket,再关闭ServerSocket

三、Socket示例说明

示例一:简单的Socket服务器

下面是一个简单的Socket服务器示例,它监听端口8888,当有客户端连接时,向客户端发送消息Hello World!,并断开连接。

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8888);
        Socket socket = serverSocket.accept();
        OutputStream out = socket.getOutputStream();
        out.write("Hello World!".getBytes());
        out.flush();
        socket.close();
        serverSocket.close();
    }
}

示例二:简单的Socket客户端

下面是一个简单的Socket客户端示例,它连接到localhost的端口8888,读取服务器发送的消息并打印,然后断开连接。

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8888);
        InputStream in = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int len;
        while ((len = in.read(buffer)) != -1) {
            System.out.println(new String(buffer, 0, len));
        }
        socket.close();
    }
}

四、总结

本文详细讲解了Java面向连接的Socket编程,包括Socket步骤和两个示例说明。希望能够帮助大家理解Socket编程的基本概念和实现方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Socket编程(二) Java面向连接的类 - Python技术站

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

相关文章

  • hibernate中的增删改查实现代码

    Hibernate是一个开源的关系型数据库持久化框架,使用Java编写,其映射机制将Java类映射到关系型数据库表中。Hibernate提供了封装的API,简化了对数据库的操作,尤其是增删改查操作。在这里,我们将学习如何使用Hibernate实现增删改查操作。 环境准备 在开始之前,请确保以下环境已经就绪: Java开发环境 Hibernate框架 MySQ…

    Java 2023年5月20日
    00
  • Tab切换组件(选项卡功能)实例代码

    下面是一个针对Tab切换组件(选项卡功能)实例代码的完整攻略,包含两个示例说明: Tab切换组件(选项卡功能)实例代码攻略 什么是Tab切换组件? Tab切换组件是一种常用的网页交互组件,它通常用于显示多个标签内容,用户可以通过点击不同标签来切换不同内容。常见的应用场景包括网页导航、商品分类、数据浏览等。 Tab切换组件的实现原理 Tab切换组件通常采用HT…

    Java 2023年6月15日
    00
  • Java Swing实现记事本页面

    Java Swing是Java平台下的一个GUI工具包,可以轻松实现桌面应用程序。要实现Java Swing记事本页面,可以参考以下完整攻略: 第一步:创建Swing应用程序 创建一个Java Swing应用程序,这可以通过在Java开发环境中选择“新建”->“项目”->“Java”->“Swing应用程序”开始。生成的新项目将包含一个My…

    Java 2023年5月19日
    00
  • SpringBoot 中常用注解及各种注解作用

    来详细讲解一下SpringBoot中常用注解及各种注解作用的攻略。 1. @SpringBootApplication 这是一个复合注解,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。 @Configuration:表示这是一个配置类,可以用来替代xml配置文件。 @EnableA…

    Java 2023年5月15日
    00
  • SpringBoot实现动态配置及项目打包部署上线功能

    关于 SpringBoot 实现动态配置及项目打包部署上线功能的攻略,我们可以分为以下几个步骤: 在项目中引入 SpringBoot 的配置应用依赖; 实现动态配置功能,可以使用 SpringCloudConfig 或者自定义实现; 打包部署并上线项目,可使用 Docker 镜像部署等方式。 下面我们来逐步详细介绍这些步骤。 引入 SpringBoot 配置…

    Java 2023年5月19日
    00
  • 深入理解Java new String()方法

    深入理解Java new String()方法 在Java中,String类是经常使用的类之一。在实际开发中,我们可能需要使用到String类中的构造函数new String(),它有许多不同的使用方式。在本篇文章中,我们将深入探讨new String()方法。 什么是new String()方法? new String()是String类的构造函数之一,它…

    Java 2023年5月26日
    00
  • SpringBoot登录用户权限拦截器

    下面是详细讲解“SpringBoot登录用户权限拦截器”的完整攻略: 什么是SpringBoot登录用户权限拦截器 SpringBoot登录用户权限拦截器主要用于过滤用户请求并确保只有已经登录并拥有相应权限的用户才能够访问特定的资源。在Web应用程序中,用户必须先经过身份验证和授权才能访问特定的页面或资源。因此,SpringBoot登录用户权限拦截器提供了一…

    Java 2023年6月3日
    00
  • IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题

    为了解决IE7浏览器窗口大小改变事件执行多次的问题以及处理IE6/IE7/IE8下的resize问题,以下是完整的攻略手册: 问题描述 在IE7浏览器下,当浏览器窗口大小改变时,会出现改变事件被执行多次的情况,而且在IE6/IE7/IE8下使用resize事件时也会出现一些问题。 解决方案 针对上述问题,可以通过以下方法解决: debounce和thrott…

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