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端口。

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
wuyk5552 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
此冬歌咏2 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog2 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
琥珀色糖2 天前
SimlpeHttp
linux·服务器
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
第十人i2 天前
Linux 日志管理系统:journald 配置与优化
linux·服务器