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代码

 客户端代码
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();}}
}

 服务器代码
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端口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/688559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FLUENT Meshing Watertight Geometry工作流入门 - 9 生成体网格

本视频中学到的内容: 讨论体网格的重要性,并了解生成体网格的不同方法 了解体网格质量,以及如何改进 视频链接: FLUENT Meshing入门教程-9生成体网格_哔哩哔哩_bilibili 体网格生成是使用大量离散体积或单元来离散化/表示计算模…

跨境云手机如何简化tiktok运营流程

如今,tiktok已经成为世界范围内都非常流行的社交媒体平台。然而在大多数情况下,由于网络原因,tiktok无法在国内使用,但依然有越来越多的人注册tiktok号码、建立tiktok矩阵。原因是tiktok仍然有大量的流量可供商业使用,…

java面试题基础篇

1.java面向对象三大特性 ​ 封装(Encapsulation):是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。 ​ 继承:就是…

php 函数(方法)、日期函数、static关键字

php 函数、日期函数 1. php函数2. 日期函数3. static 1. php函数 函数是一段可重复使用的代码块&#xff0c;可以将一系列操作封装起来&#xff0c;使代码更加模块化、可维护和可重用&#xff0c;来大大节省我们的开发时间和代码量&#xff0c;提高编程效率。 <?php// …

Sora OpenAI 101教程(一):从文本生成令人兴奋的视频的 AI 模型

想象一下&#xff0c;您可以通过简单的文本提示创建令人惊叹的视频&#xff0c;例如“一个人带着狗在月球上行走”。听起来不可能&#xff0c;对吧&#xff1f;好吧&#xff0c;现在不再这样了&#xff0c;感谢 OpenAI 的最新人工智能模型 Sora&#xff0c;它可以从文本生成令人…

情人节官宣频发,白敬亭宋轶等多对情侣陷情风。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 情人节甜蜜满溢&#xff0c;娱乐圈情侣们争相晒幸福。2024年&…

《苍穹外卖》知识梳理P11-Apache POI导出报表

一.Apache POI 可以通过Apache POI处理excel文件&#xff0c;核心操作是读和写 应用场景 银行网银交易明细各种业务系统导出Excel报表批量导入业务数据 使用步骤 1.导入maven坐标 <dependency><groupId>org.apache.poi</groupId><artifactId>poi&…

安装ts-node有感

起因&#xff1a;想要在vsCode上运行ts脚本 解决方案&#xff1a; 1.安装vsCode插件 code runner 2.全局安装ts-node 这一步遇到三个问题&#xff1a; ①.node版本问题&#xff1a;需安装版本18以上node&#xff0c;可使用nvm去控制不同的node版本 ②.certificate has exp…

NHANES数据库使用(1)

官网&#xff1a;NHANES - National Health and Nutrition Examination Survey Homepagehttps://www.cdc.gov/nchs/nhanes/index.htm 1、打开数据库 2、 选择数据集 B区检索方法和变量。C区检索数据集。A区含有B区和C区的功能。选择 NHANES 2017-March 2020打开。 3、打开数据…

flowpilot Pxiel 6 redmi K30 Pro

Installation flowdriveai/flowpilot Wiki GitHub Flowpilot can be installed on: Android phone Non-rooted running Android 10Android 11Android 12Rooted running Android 13 requires rootDesktop pc with Ubuntu > 20.04. 安装Termux https://f-droid.org/repo…

【Kuiperinfer】笔记01 项目预览与环境配置

学习目标 实现一个深度学习推理框架设计、编写一个计算图实现常见的算子&#xff0c;例如卷积、池化、全连接学会如何进行算子的优化加速使用自己的推理框架推理常见模型&#xff0c;检查结果是否能够和torch对齐 什么是推理框架&#xff1f; 推理框架用于对已经训练完成的模…

【完全二叉树节点数!】【深度优先】【广度优先】Leetcode 222 完全二叉树的节点个数

【完全二叉树】【深度优先】【广度优先】Leetcode 222 完全二叉树的节点个数 :star:解法1 按照完全二叉树解法2 按照普通二叉树&#xff1a;深度优先遍历 后序 左右中解法3 按照普通二叉树&#xff1a;广度优先遍历 层序遍历 ---------------&#x1f388;&#x1f388;题目链接…

Linux进程概念 (下) 地址空间

前言 中篇讲了进程为什么要有优先级&#xff0c;以及环境变量和通过代码获得环境变量 本篇主要讲解什么是地址空间 &#xff0c; 地址空间是怎么设计的&#xff1f;为什么要有地址空间&#xff1f; 程序地址空间 先看下图 验证上图的正文代码至堆的地址是不是从低地址向高地…

python-自动化篇-运维-网络-IP

文章目录 IP自我介绍IPy安装模块windowsLinux IPy介绍支持大多数 IP 地址格式IPv4 地址IPv6 地址网络掩码和前缀 派生网络地址将地址转换为字符串使用多个网络多网络计算方法 IP自我介绍 IP地址规划是网络设计中非常重要的一个环节&#xff0c;规划的好坏会直接影响路由协议算…

红队攻防之office文件钓鱼制作ppt钓鱼

为众人抱薪者&#xff0c;不可使其冻毙于风雪&#xff1b;为自由开路者&#xff0c;不可使其困顿于荆棘。 PPT手势触发 这种攻击则利用的是鼠标轨迹来进行操作&#xff0c;比如鼠标点击、鼠标移动等。 首先&#xff0c;创建一个普通的PPTX文件&#xff0c;随便填入一些内容&…

Shell脚本条件语句

1.条件测试 文件测试与整数测试 test命令 测试表达式是否成立&#xff0c;若成立返回0&#xff0c;不成立返回其他数值 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] 测试 是否成功使用 $? 操作符&#xff1a; -d&#xff1a;测试是否为目…

【计算机网络】P2P应用

将会在两个例子中得出结果 1&#xff0c;对等文件分发 &#xff1b;2&#xff0c;大型对等方社区中的服务器 P2P文件分发 自拓展性 直接成因是&#xff1a;对等方除了是比特的消费者外还是它们的重新分发者BitTorrent 一个用于文件分发的P2P协议洪流 torrent 参与一个特定文件…

Python——列表

一、列表的特性介绍 列表和字符串⼀样也是序列类型的数据 列表内的元素直接⽤英⽂的逗号隔开&#xff0c;元素是可变的&#xff0c;所以列表是可变的数据类型&#xff0c;⽽字符串不是。 列表的元素可以是 Python 中的任何类型的数据对象。如&#xff1a;字符串、…

VQ35 评论替换和去除(char_length()和replace函数的使用)

代码 select id ,replace(comment,&#xff0c;,) as comment from comment_detail where char_length(comment)>3知识点 要注意替换的是中文逗号 由于题目说的是汉字长度大于3&#xff0c;所以这里就要使用char_length()而不是length() char_length()&#xff1a;单位为字…

Windows10使用u盘制作linux启动盘踩坑记

双系统方法有三种&#xff1a;1.虚拟机2.windows提供了ubuntu虚拟软件3.制作启动盘 本篇提供Windows10为基础使用u盘做启动盘可以使用linux双系统。 步骤一、 在Ubuntu官网下载镜像&#xff0c;很简单找到对应版本和机器型号&#xff0c;注意区分64位和x86&#xff0c;基本上…