当在本地,向服务器发送信息时,服务器接受信息返回给客户端,此时采用多行读取时,客户端接收不到Server的信息
public class SocketTCP04Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket =new ServerSocket(9999);System.out.println("Server:"+serverSocket.getClass());System.out.println("正在等待用户连接...");//当有用户连接时,会返回一个socket对象Socket socket = serverSocket.accept();System.out.println("Client:"+serverSocket.getClass());//查看连接到的用户//接受Client的输入信息String read =null;InputStream inputStream = socket.getInputStream();BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(inputStream));while ((read= bufferedReader.readLine())!=null){System.out.println(read);}
// String s = bufferedReader.readLine();
// System.out.println(s);
// socket.shutdownInput();//现在向Client发送数据OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter =new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write("Hello, Client 字符流");bufferedWriter.newLine();//插入换行符,表示回复内容的结束bufferedWriter.flush();System.out.println("服务器已关闭~");bufferedWriter.close();bufferedReader.close();socket.close();serverSocket.close();}
}
public class SocketTCP04Client {public static void main(String[] args) throws IOException {Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.println("获取的Client的socket:" + socket.getClass());//现在向Server发送信息OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write("Hello,server 字符流");bufferedWriter.newLine();/**插入换行符后,相当于写入结束,就不用socket.shutdownOutput();此时对面一定要使用readLine()一次读一行代表读取结束*/bufferedWriter.flush();//现在接受Server的信息InputStream inputStream = socket.getInputStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));String read = null;while ((read = bufferedReader.readLine()) != null) {System.out.println(read);}
// String s = bufferedReader.readLine();
// System.out.println(s);socket.shutdownInput();bufferedReader.close();bufferedWriter.close();socket.close();}
}
此时的服务器还在等待输入,客户端也在等待服务器的应答,产生死锁,僵持不下。
经过一番尝试后发现,
当使用单行读取的时候,使用bufferedWriter.newLine();此时就不用关闭socket的输出流,即socket.shutdownOutput();可以省略,当然写上去也没错。
当使用多行读取的时候,此时,必须使用关闭socket的输出流,即socket.shutdownOutput();不能省略!!!
单行接受代码如下:
这是Client:
//现在向Server发送信息OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write("Hello,server 字符流");bufferedWriter.newLine();/**插入换行符后,相当于写入结束,就不用socket.shutdownOutput();此时对面一定要使用readLine()一次读一行代表读取结束*/bufferedWriter.flush();socket.shutdownOutput();//可以省略,加上不为错
这是Server端:
//接受Client的输入信息String read =null;InputStream inputStream = socket.getInputStream();BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(inputStream));String s = bufferedReader.readLine();System.out.println(s);socket.shutdownInput();
多行读取时:
这是Client端:
//现在向Server发送信息OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write("Hello,server 字符流");bufferedWriter.newLine();/**插入换行符后,相当于写入结束,就不用socket.shutdownOutput();此时对面一定要使用readLine()一次读一行代表读取结束*/bufferedWriter.flush();socket.shutdownOutput();//一定不能省略
这是Server端:
//接受Client的输入信息String read =null;InputStream inputStream = socket.getInputStream();BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(inputStream));while ((read= bufferedReader.readLine())!=null){System.out.println(read);}socket.shutdownInput();//不可省
相关文章:
当在本地,向服务器发送信息时,服务器接受信息返回给客户端,此时采用多行读取时,客户端接收不到Server的信息
public class SocketTCP04Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket new ServerSocket(9999);System.out.println("Server:"serverSocket.getClass());System.out.println("正在等待用户连接.…...
2310D,Dll,栈跟踪
原文 帮助 有没有想过,如果运行时拥有调试器功能,会怎样? 对系统语言来说,常见问题是解引用空针.这几乎总是会导致崩溃,很难找到该问题,特别是你不是该项目的原始开发者时. 但是,不要害怕,在此我要讲如何在不需要实际附加调试器时获得有用的调试信息. 在Java中,已存在一个叫…...
JVS-BI数字大屏设计器:一站式解决方案
数字大屏介绍 数字大屏是当下数据展示、业务监控、指挥调度常见的业务表达形态,常有可视化的图表、效果装饰、事件操作等技术组成酷炫的效果展示。 配置入口 进入JVS-BI(bi.bctools.cn),进入大屏页面,如下图所示 ①…...
uniapp 中添加 vconsole
uniapp 中添加 vconsole 一、安装 vconsole npm i vconsole二、使用 vconsole 在项目的 main.js 文件中添加如下内容 // #ifdef H5 // 提交前需要注释 本地调试使用 import * as vconsole from "vconsole"; new vconsole() // 使用 vconsole // #endif三、成功...
目标检测 YOLOv5 预训练模型下载方法
目标检测 YOLOv5 预训练模型下载方法 flyfish https://github.com/ultralytics/yolov5 https://github.com/ultralytics/yolov5/releases 可以选择自己需要的版本和不同任务类型的模型 后缀名是pt...
第16章_变量、流程控制与游标
第16章_变量、流程控制与游标 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或…...
谁知道腾讯云轻量服务器“月流量”是什么意思?
腾讯云轻量服务器月流量什么意思?月流量是指轻量服务器限制每月流量的意思,不能肆无忌惮地使用公网,流量超额需要另外支付流量费,上海/广州/北京等地域的轻量服务器月流量不够用超额部分按照0.8元/GB的价格支付流量费。阿腾云aten…...
算法笔记【4】-冒泡排序法改进
一、冒泡排序缺点 冒泡排序是一种简单但效率较低的排序算法。冒泡排序通过比较相邻元素并交换位置来实现排序。具体而言,它从数组的第一个元素开始,依次比较相邻的两个元素,如果顺序错误则交换它们的位置,直到整个数组排好序为止…...
cocos creator 资源管理
cocos creator 在使用过程中,经常需要动态加载远端资源,比日说 用户头像,龙骨动画皮肤资源,这些资源不可能都做成 预制体交给 cocos creator 帮助我们管理; 这个时候就需要我们 动态加载远端资源(但是 动态…...
好用的API调试工具推荐:Apipost
随着数字化转型的加速,API(应用程序接口)已经成为企业间沟通和数据交换的关键。而在API开发和管理过程中,API文档、调试、Mock和测试的协作显得尤为重要。Apipost正是这样一款一体化协作平台,旨在解决这些问题…...
贪心算法学习——最长单调递增子序列
目录 编辑 一,题目 二,题目接口 三,解题思路和代码 一,题目 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组…...
银行家算法(Python实现)
银行家算法,以及安全检测算法: import copy# 银行家算法(资源分配合法性) def BankersAlgorithm(Process_num, Resources_num, Request, Max, Available, Allocation, Need):PID Request[PID] # 获取发起请求的进程ID# Step1.如…...
安装终端 ·Terminator
安装终端 在 ROS 中,需要频繁的使用到终端,且可能需要同时开启多个窗口,推荐一款较为好用的终端:**Terminator。**效果如下: 1.安装 sudo apt install terminator2.添加到收藏夹 显示应用程序 —> 搜索 terminator —> 右击 选择 添…...
【Python文件操作的其他例子】
A.Python文件操作的其他例子 当然,以下是一些Python文件操作的其他例子: 1. 读取文件内容: with open(example.txt, r) as f:content f.read()print(content)这个例子会打开名为’example.txt’的文件,读取其内容,…...
使用Terraform管理已经存在的kubernates和默认的节点池
背景: 通过terraform resource "alicloud_cs_managed_kubernetes" "k8s" {...}创建集群时,会产生一个默认的节点池default-nodepool,但是如何去修改这个默认节点池的信息呢? 解决思路: 因为Ter…...
在HTML当中引入Vue控件,以element-ui为例
前情:需要实现一个同时满足按天、按周、按月选择的时间选择器,但是以HTML为基础写的都不太满足我的要求,要么只能按天选择,要么就是想选择久远的时间得点很久,除非自己写捷径,所以就看上了element-ui的这个…...
UE5实现相机水平矫正
UE5实现相机水平矫正 思路,用HIT获得基于相机视角的 离散采样点,然后根据距离相机距离进行权重分析。 距离越近,采样约中心,即越接近人眼注意点,最后算出加权平均高度,赋予给相机,相机将水平旋…...
Word插入Latex语句并编译为数学公式
WPS不可行,正版word可以(垃圾WPS) 选中Latex语句并按下Alt (此处以后补一张图) 该方法不需要额外安装什么插件哦!...
Google Play PolicyBytes 政策更新中文视频 | 2023 年 10 月
Google Play 持续帮助开发者开启成功出海之旅,为用户提供安全优质的应用。也感谢大家与我们携手合作,继续努力将 Google Play 打造为一个安全可信赖的平台。欢迎您观看 Google Play PolicyBytes 中文视频了解 2023 年 10 月政策更新内容,更及…...
pytorch-fastrcnn识别王者荣耀敌方英雄血条
文章目录 前言效果如下实现训练数据获得训练数据和测试数据yaml文件训练py画框文件的修改py测试py升级 前言 最近看王者荣耀视频看到了一个别人提供的一个百里自动设计解决方案,使用一个外设放在百里的二技能上,然后拖动外设在屏幕上滑动,当外设检测到有敌方英雄时外设自动松开…...
ToastFish:如何在Windows通知栏中偷偷背单词的终极指南
ToastFish:如何在Windows通知栏中偷偷背单词的终极指南 【免费下载链接】ToastFish 一个利用摸鱼时间背单词的软件。 项目地址: https://gitcode.com/GitHub_Trending/to/ToastFish 你是否曾经在忙碌的工作间隙想要学习英语,却又担心被同事或老板…...
告别手动填表!用Python脚本5分钟搞定DSSAT模型批量模拟(附源码)
Python自动化DSSAT模型:从Excel到批量模拟的高效科研实践 在农业科研和气候情景分析中,DSSAT模型作为全球主流的作物生长模拟工具,其价值早已被广泛认可。但真正使用过它的研究者都深有体会:当面对数十种管理方案、上百个气象场景…...
Ubuntu虚拟机磁盘空间耗尽导致MySQL启动失败的系统恢复与预防指南
1. 问题现象与核心原因剖析最近在折腾Ubuntu虚拟机时,遇到了一个挺典型的开机故障:系统启动时卡住,屏幕上赫然显示着“Failed to start MySQL Community Server”的错误信息,紧接着系统就停滞不前,无法进入图形界面。这…...
告别盲目添加LOCAL_LDFLAGS:深入理解Android NDK链接错误与libutils的正确引用姿势
深入解析Android NDK链接错误:从libutils引用看系统库的正确使用姿势 当你在Android NDK开发中遇到undefined symbol错误时,第一反应可能是寻找快速解决方案。网上常见的建议是添加-Wl,--unresolved-symbolsignore-all来绕过链接器检查,但这就…...
2026年婚礼背景音乐素材下载网站TOP5:从版权、曲库到实用场景全面评测
引言:为什么婚礼背景音乐素材越来越需要“可商用、可溯源、可快速下载” 2026年,婚礼内容已经不再只是一支婚礼纪录片,而是拆分成婚礼预告片、接亲快剪、仪式短片、First Look、婚礼跟拍花絮、短视频平台竖版成片、婚庆公司案例展示等多个内…...
超导量子计算中的三量子比特门技术解析
1. 超导量子计算中的三量子比特门技术概述在量子计算领域,实现高保真度的多量子比特门操作一直是核心挑战。超导量子处理器作为当前最有前景的量子计算平台之一,其性能很大程度上取决于量子门操作的精度和效率。固定频率transmon架构因其出色的相干性和简…...
GitHub中文插件终极指南:3分钟让英文GitHub变母语界面
GitHub中文插件终极指南:3分钟让英文GitHub变母语界面 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为GitHub的英文…...
tensorrt_demos性能对比分析:FP16 vs INT8 vs DLA核心的优劣对比
tensorrt_demos性能对比分析:FP16 vs INT8 vs DLA核心的优劣对比 【免费下载链接】tensorrt_demos TensorRT MODNet, YOLOv4, YOLOv3, SSD, MTCNN, and GoogLeNet 项目地址: https://gitcode.com/gh_mirrors/te/tensorrt_demos tensorrt_demos是一个支持MODN…...
网络安全有哪些岗位?如何成为一名优秀的网络安全工程师?
网络安全有哪些岗位?如何成为一名优秀的网络安全工程师? 网络安全是什么? 首先说一下什么是网络安全?其中,网络安全工程师工作内容具体有哪些? 网络安全 确保网络系统的硬件、软件及其系统中的数据受到保护…...
2026年支持人民币计价的金价追踪APP有哪些
家人们谁懂啊!上周我发小蹲了3个月的50克古法金镯子终于下手,结账的时候才傻了眼:她之前用来盯金价的APP默认是美元离岸价,自己换算的时候忘了算汇率差和国内基础金价的浮动,预估的总价和实际付款差了快1800࿰…...
