Socket与Server通讯

ByteArrayOutputStream 对byte类型数据进行写入的类 ,自动扩容,相当于一个中间缓冲层,将类写入到文件等其他outputStream。它是对字节进行操作,属于内存操作流

 


import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;public class SocketUtils {private final static String ip = "127.0.0.1";private final static int port = 12345;private final static int timeout = 5000;public static void sendMsg() {Socket clientSocket = null;try {clientSocket = new Socket();//连接上后,生成SocketclientSocket.connect(new InetSocketAddress(ip, port),timeout);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();outputStream.write(intToBytesToLH4(4090));outputStream.write(intToBytesToLH2(2));outputStream.write(intToBytesToLH2(2));outputStream.write(intToBytesToLH4(1));byte[] b = new byte[16];System.arraycopy("".getBytes(), 0, b, 0, "".getBytes().length);b["".getBytes().length] = 0;outputStream.write(b);socket关联的输出流对象OutputStream outputStream1 = clientSocket.getOutputStream();//将缓冲区的数据全部获取出来,返回字节数组byte[] c = outputStream.toByteArray();//通过输出流,写入数据到数据通道outputStream1.write(c);//清空缓存并输出流outputStream1.flush();//关闭流对象outputStream1.close();} catch (Exception e) {e.printStackTrace();} finally {// 关闭客户端Socket连接try {clientSocket.close();} catch (Exception e) {e.printStackTrace();}}}// 将int转为低字节在前,高字节在后的byte数组private static byte[] intToBytesToLH2(int n) {byte[] b = new byte[2];b[0] = (byte) (n & 0xff);b[1] = (byte) (n >> 8 & 0xff);return b;}private static byte[] intToBytesToLH4(int n) {byte[] b = new byte[4];b[0] = (byte) (n & 0xff);b[1] = (byte) (n >> 8 & 0xff);b[2] = (byte) (n >> 16 & 0xff);b[3] = (byte) (n >> 24 & 0xff);return b;}}

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

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

相关文章

gulp和webpack的区别

Gulp和Webpack都是前端开发中常用的工具,但它们在功能和定位上存在一些差异。 首先,Gulp是一个工具链和构建工具,强调的是前端开发流程。它可以配合各种插件进行js压缩、css压缩、less编译等操作,实现自动化工作。在Gulp中&#…

Qt的简单游戏实现提供完整代码

文章目录 1 项目简介2 项目基本配置2.1 创建项目2.2 添加资源 3 主场景3.1 设置游戏主场景配置3.2 设置背景图片3.3 创建开始按钮3.4 开始按钮跳跃特效实现3.5 创建选择关卡场景3.6 点击开始按钮进入选择关卡场景 4 选择关卡场景4.1场景基本设置4.2 背景设置4.3 创建返回按钮4.…

2024 十大AI预测

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

偏最小二乘法中的“偏”的含义

问:偏最小二乘法中的“偏”是指什么意思? 答:偏最小二乘法(Partial Least Squares,简称PLS)中的“偏”指的是这种方法部分地考虑了响应变量的信息来进行预测变量的提取。与传统的最小二乘法相比&#xff0c…

Python 时间处理与数据分析利器:深入剖析 Arrow 模块的优势

写在开头 时间在数据分析中扮演着至关重要的角色,而选择适当的时间处理模块对于提高代码效率和可读性至关重要。本文将深入介绍 Arrow 模块,探讨其相对于其他时间处理模块的优势,以及在数据分析中的实际应用。 1. Arrow 模块概览 Arrow 模…

模式识别与机器学习(十一):Bagging

1.原理 Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得…

【JAVA】分布式链路追踪技术概论

目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 1.概述 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题:…

编程语言学习目录

文章目录 一篇入门系列C#Fortranerlang/elixirR语言Go语言Rust语言 一篇入门系列 文本处理神器awkbash shellclojure极简教程F#语言入门教程量子编程初步——Q#入门1小时快速入门Python如何用两个晚上教会妹纸PythonVIM使用进阶:VIM脚本初步写给Matlab用户的Python…

网络基础知识制作网线了解、集线器、交换机与路由器

目录 一、网线的制作 1.1、材料 1.2、网线的标准类别 二、集线器、交换机介绍 2.1、概念: 2.2、OSI七层模型 2.3、TCP/IP四层 三、路由器的配置 3.1、概念 3.2、四个模块 1、 网络状态 2、设备管理 3、应用管理 无人设备接入控制 无线桥接 信号调节…

7-8 旅行售货员

7-8 旅行售货员 某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使总的路程(或总旅费)最小。 输入格式: 第一行为城市数n…

VS(Visual Studio)更改文件编码

vs默认编码是GB2312,更改为UTF-8 工具->自定义

【数据结构入门精讲 | 第十篇】考研408排序算法专项练习(二)

在上文中我们进行了排序算法的判断题、选择题的专项练习,在这一篇中我们将进行排序算法中编程题的练习。 目录 编程题R7-1 字符串的冒泡排序R7-1 抢红包R7-1 PAT排名汇总R7-2 统计工龄R7-1 插入排序还是堆排序R7-2 龙龙送外卖R7-3 家谱处理 编程题 R7-1 字符串的冒…

Java进阶(第六期): Arrays类(数组工具)、冒泡排序、选择排序、二分查找、【正则表达式】、Java正则爬取信息

文章目录 一、Arrays1.1代码示例: 二、冒泡排序2.1 代码示例 三、选择排序3.1 代码示例 四、二分查找4.1 代码示例 (这里采用乱序数组) 五、正则表达式5.1 正则表达式的基本使用5.2 正则表达式爬取信息练习 Java进阶(第六期&#…

吉利银河L6 车机等问题交流/记录

车机低电量重启问题 动力电池低电量(2km) 时,播放视频,会大概5min的周期,做周期性的车机重启,我点了停车发电,让发动机发电才避免重启. app闪退 app不可见 你只能安装他应用商店少的可怜的app 自己安装的他不显示,就算你把他显示了,也可能播放视频中出现app闪退现象 车机…

OpenCV学习笔记 - 使用 OpenCV 检测运动的最简单方法

一、运动检测 运动检测是检测视频序列中移动对象的过程。在计算机视觉中,它是检测视频帧中像素级变化的过程。我们可以用它来发现现实世界中的新对象,甚至执行与类无关的对象检测,这在地理空间分析、客户分析、监视、自治和其他相关领域非常有用。 如何检测视频中的运动?这…

Git的总体认知与具体实现

GIt概念 是一种分布式控制管理器 tips:敏捷开发 -> 先上线,后续开发再继续开发 集中式和分布式 集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅…

数据处理系列课程 01:谈谈数据处理在数据分析中的重要性

一、数据分析 可能很多朋友第一次听到这个名词,那么我们先来谈一谈什么是数据分析。 数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解,以求最大化地开发数据的功能,发挥数据的作用。数据分析是…

Web前端-JavaScript(Dom基础)

文章目录 1.1 DOM 介绍1.1.1 DOM简介1.1.2 DOM树 1.2. 获取元素1.2.1 根据ID获取元素1.2.2 根据标签名获取元素1.2.3 其它方式获取元素1.2.4 获取特殊元素 1.3 事件基础1.3.1 事件概述1.3.2 事件三要素1.3.3 执行事件步骤1.3.4 鼠标事件 1.4 操作元素1.4.1 操作元素内容1.4.2 属…

[Java][IOstream][转化流]以GBK读取数据用UTF-8写出数据的实例分析

在这里我们用到了转化流,所谓的转化流也就是实现字节流向字符流的转化。 我们都知道:Java提供了两种基础的字节流 FileInputStream可以让程序读入一个文件的信息 FileOutputStream可以让程序写出一个文件的信息 但是字节流处理的问题过于宏大&#x…

MyBatis的动态SQL

目录 一、什么是动态SQL? 二、MyBatis标签 1、if标签 2、where标签 3、set标签 4、trim标签 5、foreach标签 6、sql标签 7、bind标签 8、choose标签 9、include标签 一、什么是动态SQL? 动态SQL是一种在运行时动态生成和执行SQL查询语句的技术。它允许根据不同条…