Socket网络编程基础教程

Socket网络编程基础教程

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的Socket网络编程,这是实现网络通信的重要基础。

什么是Socket?

Socket是网络编程中的一种抽象,它定义了两台设备之间通信的端点。通过Socket,程序可以在网络上发送和接收数据,实现不同设备之间的通信和数据交换。

Socket编程基础

在Java中,Socket编程通常涉及两个主要类:ServerSocket和Socket。

1. 服务器端Socket(ServerSocket)

服务器端通过ServerSocket来监听客户端的连接请求,并创建对应的Socket与客户端进行通信。

package cn.juwatech.socketexample;import java.io.*;
import java.net.*;public class Server {public static void main(String[] args) {ServerSocket serverSocket = null;Socket clientSocket = null;try {serverSocket = new ServerSocket(8080); // 监听8080端口while (true) {System.out.println("等待客户端连接...");clientSocket = serverSocket.accept(); // 等待客户端连接System.out.println("客户端连接成功:" + clientSocket);// 处理客户端请求BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);String message = in.readLine(); // 读取客户端发送的消息System.out.println("收到客户端消息:" + message);// 向客户端发送响应消息out.println("服务器已收到消息:" + message);// 关闭流和连接in.close();out.close();clientSocket.close();}} catch (IOException e) {e.printStackTrace();} finally {try {if (serverSocket != null) serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}
}
2. 客户端Socket(Socket)

客户端通过Socket连接服务器,并进行数据交换。

package cn.juwatech.socketexample;import java.io.*;
import java.net.*;public class Client {public static void main(String[] args) {Socket socket = null;PrintWriter out = null;BufferedReader in = null;try {socket = new Socket("localhost", 8080); // 连接到服务器的8080端口out = new PrintWriter(socket.getOutputStream(), true);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 发送消息到服务器out.println("Hello Server!");// 接收服务器的响应消息String response = in.readLine();System.out.println("服务器响应:" + response);} catch (UnknownHostException e) {System.err.println("找不到主机: localhost");} catch (IOException e) {System.err.println("无法连接到服务器: localhost");} finally {try {if (out != null) out.close();if (in != null) in.close();if (socket != null) socket.close();} catch (IOException e) {e.printStackTrace();}}}
}

Socket编程的应用

Socket编程广泛应用于各种网络通信场景,如网络聊天、文件传输、远程控制等。通过Socket,不同设备和程序可以在网络上进行数据交换和通信,实现了分布式系统的互联互通。

总结

本文介绍了Java中Socket网络编程的基础知识,包括Socket的概念、服务器端Socket和客户端Socket的实现方式,并提供了简单的示例代码。希望通过本文的介绍,您能对Socket编程有所理解和掌握。

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

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

相关文章

echarts进度环叠加背景图

vue组件实现&#xff1a; <template><div class"ringWrap" :style"{transform:scale(${scale})}"><!-- 圆环 --><div :id"chartId" :style"{width:220px,height:220px,transform:scale(${scale})}"></div…

一个适用于标准普通 WordPress 博客站点的 CloudFlare 缓存规则

长期以来很多 WordPress 站长们都以为 WordPress 这样的动态博客网站系统的 CDN 缓存效果是有限的,尤其是 WordPress 伪静态后的.html 是无法被 CDN 完美缓存的。其实这个是跟你的博客网站架构有关系,如果你的 WordPress 网站用的是单用户模式(就是只需要网站管理员登录,不…

【JavaScript】var, let, const区别

提出 var是ES5提出的&#xff0c;let和const是ES6提出的。 作用域不同 let和const具有块级作用域&#xff0c;var不存在块级作用域,可以跨块访问, 不能跨函数访问 // 全局 var a 10 console.log(a) // 10const test (c) > {var b 20console.log(b) // 20&#xff0c;…

[单master节点k8s部署]13.statefulSet

statefulSet 为每一个pod提供一个稳定的、唯一的网络标识符&#xff0c;每个 Pod 通过 PersistentVolumeClaim (PVC) 获得自己的存储。即使 Pod 被重新调度到另一个节点&#xff0c;这个 PVC 也会被重新挂载到正确的 Pod 上&#xff0c;保证存储的稳定性。 statefulset创建的p…

LeetCode-213. 打家劫舍 II【数组 动态规划】

LeetCode-213. 打家劫舍 II【数组 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;分三种情况&#xff0c;一&#xff1a;不考虑头尾&#xff1b;二&#xff1a;考虑头不考虑尾&#xff1b;三&#xff1a;考虑尾不考虑头。解题思路二&#xff1a;优化空间解题思路三&am…

Android笔记-adb keycode大全

使用方法 用adb发送按键事件时&#xff0c;可以使用下面表中的枚举值或者直接使用数值&#xff0c;比如 adb shell input keyevent KEYCODE_HOME 或者 adb shell input keyevent 3 下面按三种排序方法列出所有按键的 keycode&#xff0c; 分别是&#xff1a; 按功能分 按枚…

C++ 设计模式之命令模式

C 设计模式之命令模式 简介 1、命令模式 &#xff08;Command&#xff09;是一种行为型设计模式&#xff0c;它将一个请求封装为一个对象&#xff0c;从而使您可以用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 2、…

浏览器userAgent大全及JS判断当前APP

文章目录 userAgent 检测PC/Mobile 浏览器 userAgent 大全Mobile APP userAgent 大全JS 判断当前 APP userAgent 检测 https://useragent.buyaocha.com/ PC/Mobile 浏览器 userAgent 大全 系统浏览器User-Agent字符串MacChromeMozilla/5.0 (Macintosh; Intel Mac OS X 10_12…

vue数组套对象,在动态加入属性:属性值, 导致数据不更新

一 、案例效果 [{a: 1,b:2},{a: 1,b:2}, toggle:true]导致视图不更新且数据没有响应式。这种格式是数组套对象的&#xff0c;之后由于不想在遍历一层数据变成[{a: 1,b:2,toggle:true},{a: 1,b:2,oggle:true} ] ,就直接加在对象后面了【虽然这样写法不对&#xff0c;但是&#…

LLM端侧部署系列 | 陈天奇MLC-LLM重磅升级:基于机器学习编译的通用LLM部署引擎

引言 简介 MLCEngine的聊天功能 OpenAI风格API 云端REST API Python API iOS SDK Android SDK WebLLM SDK 小结 结构化生成 支持各种平台 优化引擎性能 总结 引言 流星透疏水&#xff0c;走月逆行云。 小伙伴们好&#xff0c;我是《小窗幽记机器学习》的小编&am…

如何获取泛型参数【Java】

对于一个基本的类 public class BaseDao<T>{T findOne() {return T;} }它的子类 public class StudentDao extends BaseDao<StudentDao.Student>{public static class Student{}}如何获得当前类对应的泛型参数呢&#xff1f; 方法一 JDK public static void ma…

关于onlyoffice回调函数的问题

参考文档1&#xff1a;https://api.onlyoffice.com/zh/editors/callback 在官方文档中描述的十&#xff0c;文档存储服务的回调函数&#xff0c;必须要返回 {"error": 0}表示成功&#xff0c;否则将提示错误信息。 但是经过实测&#xff0c;我们只需要正常的返回2…

力扣2874.有序三元组中的最大值 II

力扣2874.有序三元组中的最大值 II 遍历j –> 找j左边最大数 和右边最大数 class Solution {public:long long maximumTripletValue(vector<int>& nums) {int n nums.size();vector<int> suf_max(n1,0);//右边最大数for(int in-1;i>1;i--){suf_max[i…

Mysql - 数据库备份和恢复

当涉及到数据库管理时&#xff0c;数据库备份和恢复是非常关键的操作。备份可以保护数据库中的重要数据免受意外删除、数据库故障或者恶意攻击的影响。同时&#xff0c;恢复操作可以帮助我们在发生意外情况时快速恢复数据库到之前的状态。在这篇文章中&#xff0c;我们将深入探…

每日一题——Python实现PAT乙级1090 危险品装箱(举一反三+思想解读+逐步优化)4千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 题目链接&#xff1a;https://pintia.cn/problem-sets/994805260223102976/exam/problems/typ…

STL工程问题

文章目录 1. vector迭代器失效问题1.1. 情况1&#xff1a;扩容导致迭代器失效1.2. 情况2&#xff1a;删除导致迭代器失效1.3. 情况3&#xff1a;尾删导致迭代器失效 2. STL怎么做内存管理3. 如何解决哈希冲突&#xff1f;4. vector手动释放内存问题5. 对象池思想 1. vector迭代…

基于SSM的校园闲置物品交易平台

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM的校园闲置物品交易平台,java项目…

Advanced RAG 09:『提示词压缩』技术综述

编者按&#xff1a; 如何最大限度地发挥 LLMs 的强大能力&#xff0c;同时还能控制其推理成本&#xff1f;这是当前业界研究的一个热点课题。 针对这一问题&#xff0c;本期精心选取了一篇关于"提示词压缩"(Prompt Compression)技术的综述文章。正如作者所说&#xf…

Zookeeper 四、Zookeeper应用场景

Zookeeper是一个典型的发布/订阅模式的分布式数据管理与协调框架&#xff0c;我们可以使用它来进行分布式数据的发布与订阅。另一方面&#xff0c;通过对Zookeeper中丰富的数据节点类型进行交叉使用&#xff0c;配合Watcher事件通知机制&#xff0c;可以非常方便地构建一系列分…

八爪鱼现金流-032,给用户发邮件提示功能

每个月的 5 号、15 号、25 号的 17:30 工资日&#xff0c;给用户发送邮件&#xff0c;提示记账月报。 您也来记账一笔吧。 然后首页能看到趋势图。 八爪鱼现金流 八爪鱼