javaweb——socket

定义

Socket(套接字)是计算机网络编程中的一种抽象,用于在网络上进行通信。它允许计算机之间通过网络进行数据传输。在Java中,Socket类提供了对TCP/IP协议的支持,通过它可以创建客户端和服务端程序,实现网络通信。

分类

Socket可以分为两种类型:客户端Socket和服务端Socket。

  1. 客户端Socket:客户端Socket用于与服务端建立连接并发送请求。在Java中,可以使用Socket类来创建客户端Socket对象,并通过该对象与指定的服务端进行通信。

  2. 服务端Socket:服务端Socket用于监听客户端的连接请求,并在客户端连接成功后建立与客户端的通信。在Java中,可以使用ServerSocket类来创建服务端Socket对象,并通过该对象接受客户端的连接。

用途

通过使用Socket编程,可以实现各种网络应用,如Web服务器、聊天程序、文件传输等。

通过Socket技术(它是计算机之间进行通信的一种约定或一种方式),我们就可以实现两台计算机之间的通信,Socket也被翻译为套接字,是操作系统底层提供的一项通信技术,它支持TCP和UDP。而Java就对socket底层支持进的封装,我们可以通过Java来实现Socket通信。

要实现Socket通信,我们必须创建一个数据发送者和一个数据接收者,也就是客户端和服务端,我们服务端,来等待客户端的连接,而客户端只需要随时启动去连接服务端即可!

java代码

客户端代码
java 复制代码
import java.io.IOException;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost", 8080)) {
            System.out.println("已连接到服务端!");
        } catch (IOException e) {
            System.out.println("服务端连接失败!");
            e.printStackTrace();
        }
    }
}
服务器代码
java 复制代码
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try (ServerSocket server = new ServerSocket(8080)) {
            System.out.println("正在等待客户端连接...");
            Socket socket = server.accept(); // 当没有客户端连接时,线程会阻塞,直到有客户端连接为止
            System.out.println("客户端已连接,IP地址为:" + socket.getInetAddress().getHostAddress());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
运行截图

先运行服务器端代码 在运行客服端代码 ,不然会报错


总结

这份代码实现了一个简单的客户端-服务端通信模型。服务端通过创建一个ServerSocket对象,并指定端口号8080,然后调用accept()方法等待客户端的连接。客户端通过创建一个Socket对象,指定要连接的服务端地址和端口号,然后与服务端建立连接。

在代码中使用了try-with-resources语句,确保了资源的正确关闭,同时通过捕获和处理IOException来处理可能的异常情况。

服务端在接受到客户端连接后,输出客户端的IP地址;客户端在成功连接到服务端时输出连接成功的消息。如果连接失败,则在客户端打印出连接失败的消息,并输出异常信息。

这样的设计可以作为一个简单的网络通信的基础框架,可以在此基础上进行更复杂的通信协议和功能的扩展。

以上是你的服务端和客户端代码的完整版本。服务端监听端口8080,等待客户端连接;客户端连接到本地主机的8080端口。

相关推荐
BioTender10 分钟前
Xaira 发布 X-Automate:将物理 AI 与智能体 AI 引入实验室自动化
运维·人工智能·自动化
Z21-X2 小时前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Decay__10 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
anew___13 小时前
《从零手写操作系统 (63):安全与加固——从内核保护到沙箱隔离》
网络·安全
Lzg_na13 小时前
VXLAN:背景、机制、报文字段与主机转发流程
网络
天远API14 小时前
零信任架构实战:基于天远运营商三要素详版V即时版构建自动化消费电子大促电商平台高价值权益秒杀与优惠券防羊毛高并发实名核验网关
运维·人工智能·架构·自动化
Android系统攻城狮15 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
乐维_lwops15 小时前
案例解读:大型综合性科创产业园运维监控落地实践
运维·网络·人工智能·安全·it监控·国产运维智能体
番茄啊17 小时前
linux 开启xftp连接
linux·运维·服务器
m0_7156744317 小时前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
大数据·网络·人工智能·安全·网络安全·政务