Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。

简介: Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。

Java Socket编程的基本流程可以概括为以下几个步骤:创建服务器,创建客户端,建立连接,数据交换,关闭连接。下面是对这些步骤的详细解释:


一、创建服务器


创建 ServerSocket 对象:首先,服务器需要创建一个 ServerSocket 对象,并绑定到一个特定的端口上。ServerSocket 对象负责监听来自客户端的连接请求。


java

ServerSocket serverSocket = new ServerSocket(port);

其中,port 是服务器需要监听的端口号。


二、创建客户端


创建 Socket 对象:客户端需要创建一个 Socket 对象,并指定要连接的服务器地址和端口号。


java

Socket socket = new Socket(serverAddress, serverPort);

其中,serverAddress 是服务器的 IP 地址或主机名,serverPort 是服务器监听的端口号。


三、建立连接


服务器接受客户端连接:当客户端发起连接请求时,服务器端的 ServerSocket 对象会调用 accept() 方法来接受这个连接,并返回一个 Socket 对象,这个对象代表与客户端的连接。


java

Socket clientSocket = serverSocket.accept();

accept() 方法是一个阻塞方法,如果没有客户端连接,它将一直等待。


四、数据交换


获取输入/输出流:一旦连接建立,服务器和客户端就可以通过各自的 Socket 对象获取输入/输出流,进行数据的发送和接收。


java

// 服务器端获取输入流

InputStream inputStream = clientSocket.getInputStream();

// 客户端获取输出流

OutputStream outputStream = socket.getOutputStream();

发送和接收数据:通过输入/输出流,服务器和客户端可以发送和接收数据。发送数据时,将数据写入输出流;接收数据时,从输入流中读取数据。


java

// 服务器端发送数据

outputStream.write(“Hello, client!”.getBytes());

// 客户端接收数据

byte[] buffer = new byte[1024];

int length = inputStream.read(buffer);

String message = new String(buffer, 0, length);

五、关闭连接


关闭 Socket 和 ServerSocket:当数据交换完成后,服务器和客户端都需要关闭各自的 Socket 对象,以及服务器端的 ServerSocket 对象。


java

// 客户端关闭 Socket

socket.close();

// 服务器关闭 Socket 和 ServerSocket

clientSocket.close();

serverSocket.close();

以上就是 Java Socket 编程的基本流程。需要注意的是,实际编程中可能还需要考虑异常处理、多线程处理、数据格式等问题。同时,Java 的 NIO(非阻塞 I/O)和 NIO2(也称为 New I/O 或 java.nio.channels 包)也提供了更高级、更灵活的 I/O 操作方式,可以根据具体需求进行选择。

相关文章
|
15天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
3天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
26 14
|
20天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
21天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
43 4
|
12天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
17天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
19天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
17天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
|
25天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
63 9
|
22天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。