Java Socket 编程注意 PrintWriter

Java网络编程:通过Socket读写数据 在网络编程中,文本数据是最常见的传输形式。Java通过和类处理字符流,适合传输字符串或文本消息。这些类基于Socket的输入和输出流构建,简化了文本数据的读写操作。:从输入流读取文本行,适合处理多行文本。:向输出流写入文本,支持自动刷新功能。当需要传输非文本数据(如整数、浮点数)或追求高效传输时,二进制数据是更好的选择。Java的和类支持以二进制格式读写原始数据类型和字符串,数据格式与平台无关。:读取二进制格式的原始数据类型,如readInt()。:写入二进制格式的原始数据类型,如。 阅读详情

利用Java进行Socket编程时,一般的,输出流,我们会选择PrintWriter。当选择PrintWriter时,要注意它的两个方法:

write()  和 println();

假如你写了个很简单的C/S通信程序,当使用Write方法时,你可能在Client端输完一行了,打了回车,但Server端还是看不到Client端输入的信息。但如果你使用Println()就不会。为什么呢?当查看Java API的时候发现:

                  使用println()时,当你输入行分隔符(如回车)时,程序会帮你终止当前行,而write则不会。这时候,write()跟println()的区别 和 print() 跟 println() 的区别是一样的。



		input = new BufferedReader(new InputStreamReader(
					socket.getInputStream()));
			output = new PrintWriter(socket.getOutputStream(),true);

			scn = new Scanner(System.in);
			String outStr, inStr;
			while ((inStr = input.readLine()) != null) {
				if ("Bye".equals(inStr)) {
					break;
				}
				System.out.println("Client:" + inStr);
				outStr = scn.nextLine();
				output.println(outStr);

			}


在Dos控制台编译运行的时候,要注意,如果遇到以下情况,最好去检查下环境变量有没有配好:




比较常见的是:在ClassPath中少了个分号。如果少了个分号,就会出现上面的错误。




还有一点值得注意:当使用SSL对socket进行加密是,证书文件应该跟.class文件放在同一个目录下。


N5105核显直通PVE:从黑屏到HDMI输出的完整指南 PCI直通能让虚拟机独占物理设备,但核显直通远没有独显那么轻松。Intel核显与CPU、显示输出链路的强耦合使UEFI引导、GOP驱动、驱动签名等环节都成了黑屏陷阱。在PVE虚拟化环境中,通过IOMMU开启、vfio-pci绑定、OVMF固件和Q35机型配合,可以绕过KVM检测,让Windows虚拟机正确驱动核显,从HDMI口输出画面,并解锁Intel Quick Sync硬解能力。这种方案尤其适合N5105等低功耗迷你主机,可作为客厅HTPC、本地视频硬解或依赖硬件加速的轻量工作台。本文基于N5105平台 阅读详情

相关推荐

海康视觉平台VisionMaster实战入门:从通讯配置到工具应用

本文为海康VisionMaster视觉平台实战入门指南,详细介绍了从软件安装准备、与PLC等外部设备的通讯配置,到匹配定位、测量、畸变矫正等核心工具的应用方法。通过实战案例拆解,帮助工程师快速掌握如何搭建完整的机器视觉检测与引导定位系统,实现工业自动化项目落地。

weixin_29224309的博客 1016

Java Socket实战之二 多线程通信

本文地址:http://blog.youkuaiyun.com/kongxx/article/details/7259465 Java Socket实战之一 单线程通信 上一篇文章说到怎样写一个最简单的Java Socket通信,但是在上一篇文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后续Client不能再继续连接,所以需要做些改动,当S...

yaasshole 312

保姆级教程:手把手带你复现APFNet论文的RGBT目标跟踪模型(附完整代码与数据集配置)

本文提供了一份详细的APFNet论文复现指南,涵盖从环境搭建到模型测试的全流程。通过解析多模态融合模块和渐进式训练流程,帮助读者高效完成RGBT目标跟踪模型的复现工作,特别针对训练和测试中的常见问题提供实用解决方案。

weixin_29056781的博客 343

Java 网络 socket 编程

使用套接字实现基于 TCP 协议的服务器和客户机程序 依据 TCP 协议,在 C/S 架构的通讯过程中,客户端和服务器的 Socket 动作如下: 客户端: 1.用服务器的 IP 地址和端口号实例化 Socket 对象。 2.调用 connect 方法,连接到服务器上。 3.将发送到服务器的 IO 流填充到 IO 对象里,比如 BufferedReader/PrintWriter。 4...

秃了也弱了 2622

STM32F407 CubeMX UART DMA高效解析BNO085九轴数据

本文详细介绍了如何在STM32F407平台上使用CubeMX配置UART和DMA高效解析BNO085九轴传感器数据。通过DMA循环接收机制实现低CPU占用的实时数据采集,并分享数据解析技巧、错误处理及实战调试经验,为嵌入式开发者提供完整解决方案。

o4p5q6r7s的博客 235

【翼型】基于Matlab的NACA翼型气动性能仿真与优化【附源码】

本文详细介绍了如何使用Matlab进行NACA翼型的气动性能仿真与优化。内容涵盖从生成NACA翼型坐标、利用面板法快速估算升阻力,到进阶的粘性流模拟与优化设计入门。通过清晰的代码示例和分步指南,帮助读者掌握基于Matlab的翼型分析与优化流程,为飞行器或叶片设计提供实用工具和方法。

weixin_29032489的博客 411

java Socket编程从客户端将数据写到流中时用PrintWriter替换BuferedWriter

在练习用Socket实现基于TCP的一对一聊天编程时,在客户端利用BufferedWriter将数据写到流中,但是Server端一直读不出来。写了flush()方法后也是如此。后面发现,是因为通过Socket.getOutputStream()这个方法得到实现类是java.net.SocketOutputStream。这个类并没有重写flush()方法,其父类java.io.FileOutputS

zhao12345134的专栏 727

《跨界杂谈》华为印象(五):高度集权的矩阵式架构

高度集权的矩阵式架构 “高度集权的矩阵式架构”不是官方术语。是笔者的一位同事非常经典的总结。解释这个句话还是有点困难的,笔者入职华为三年也没彻底搞明白,在这里只能尝试性的解释一下。 矩阵 我们先看一下“矩阵”。华为有两套部门职能体系,华为内部术语,叫实线部门和虚线部门。由实线与虚线部门交叉构成矩阵。大部分(但不是所有)华为员工都由两个部门(两个领导)进行管理。对员工而言,所谓的实线部

《云计算架构技术与实践》 2996

JAVA中socket编程println()和 write()方法

采用基于TCP的c/s类型socket编程,client发出消息,在Server中接收,并且在接收时采用readline()方法时需要注意,readline()方法要读到分隔符才会完成读取操作,因此如果client采用的是write()方法,则需要在write()方法的括号中加入分隔符,如回车(‘\n’),例如write("示例字符串\n")。也可以直接使用PrintWriter类的println

iamihanfei的博客 2353

基于STM32+RFID设计的宿舍检修管理系统

设计一个上位机,用来管理查看维修检修信息,当维修寝室的设备或者检修完成时,通过STM32上的RC522刷一下这个寝室的IC卡,识别这是哪个寝室,识别成功后在软件上弹出一个对话框,填写本次维修或者检修的事件,填写完毕点击提交即可。...

2555

【DRAM存储器二】Sense Amplifier

详述DRAM颗粒中感应放大器功能、电路结构、工作原理和操作波形

highman110的博客 7203

java socket 输入输出流_记录 serverSocket socket 输入,输出流,关闭顺序,阻塞,PrintWriter的一些问题....

关于socket.getOutputStream() 的一些问题, OutputStream的flush是一个空方法,所以需要另一个实现了Flush的流来包装一下这里为什么使用PrintWriter,而不使用BufferedWriter原因是在接收方使用BufferedReader 的readLine,而BufferedWriter.write并不会自动换行,所以会导致读取阻塞,需要手动换行,代码...

weixin_36118049的博客 866

【ArcGIS微课1000例】0118:一文讲清楚tif(geotiff)栅格数据格式

TIFF(Tagged Image File Format)是一种常见的图像文件格式,它被广泛用于存储和传输各种类型的图像数据。图像存储:TIFF格式可以存储多通道的位图图像,包括灰度图、彩色图和透明度图等。它支持不同的像素深度,可以是8位、16位、24位或32位等。因此,TIFF格式非常适合存储高质量的图像数据,包括照片、卫星图像、医学影像等。无损压缩:TIFF格式支持无损压缩,这意味着图像可以被压缩而无需损失任何像素信息。这种压缩方式可以减小文件大小,而不会降低图像的质量。

智慧空间实验室 2822

java的套接字编程_Java套接字socket编程笔记

相对于C和C++来说,Java中的socket编程是比较简单的,比较多的细节都已经被封装好了,每次创建socket连接只需要知道地址和端口即可。在了解socket编程之前,我们先来了解一下读写数据的数据流类中一些需要注意的东西。BufferedReader与DataInputStream的区别:通常我们常用到的字节输入输出流有BufferedReader与PrintWriter,DataInput...

weixin_29146599的博客 179

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java套接字客户端时间间隔连接服务器_纠结了一天的JAVA简单客户端服务器Socket编程终于解决了...

闲着写了个简单java的socket编程,无语了,这么简单的程序都写不出来了,代码如下:==================================================================================Server(服务器端):package remember;import java.io.BufferedReader;import java.io...

weixin_39717121的博客 113

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

纠结了一天的JAVA简单客户端服务器Socket编程终于解决了

闲着写了个简单java的socket编程,无语了,这么简单的程序都写不出来了,代码如下: ================================================================================== Server(服务器端): package remember; import java.io.BufferedReader;import...

weixin_34082695的博客 98

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java socket读字节问题

原来java socket一直都用readline解析数据,后来和硬件设备通讯才知道readline必须有\n\t, OutputStream o = socket.getOutputStream(); o.write(message.getBytes("UTF-8")); // out = new PrintWriter(so

liuwei063608的专栏 5592

黑马程序员--学习笔记(网络编程)

------- android培训、java培训、期待与您交流! ----------

qq597525491的专栏 559

socket编程不能用PrintWriter

简单化的把问题说一下吧!最近试着编写socket聊天小软件。 在服务器端和客户端产生一个Socket 后, 两边各自用getIputStream()和getOutputStream()方法,构造各自的输入输出流。 其中服务器端的Socket ss BufferedReader is=new BufferedReader(new InputStreamReader(ss.getInputStream...

m16iii163的博客 367

Socket中PrintStream,PrintWriter的print无法被readUTF获取

发现一个问题 Socket编程中要慎用 PrintStream和PrintWriter,首先创建时要注意加上 true,自动flush,否则数据无法发送出去, 其次它们的println()要用它们的readLine来读取,如果你用用DataInputStream.readUTF读取将导致阻塞,一直都读取不到数据,见下面代码就是。 package com.chat.server.io; ...

newslxw 275

Socket编程中,尽量用PrintWriter取代BufferedWriter

简单化德把问题说一下吧!最近试着编写socket聊天小软件。 在服务器端和客户端产生一个Socket 后, 两边各自用getIputStream()和getOutputStream()方法,构造各自的输入输出流。 其中服务器端的Socket ss BufferedReader is=new BufferedReader(new InputStreamReader(ss.getIn...

dlkaksou52717的博客 95

浅出Java Socket 编程

浅出Java Socket 编程        前言:本文转自http://dev.youkuaiyun.com/develop/article/27/27115.shtm,其中个别地方加入了笔者的个人见解。        出于多种目的要写这篇文章,简单的说是因为最近的工作和Java 的Socket相关.所以工作之余就有了写点东西的想法.同样我不希望把文章写的太复杂,因此浅出自己的一点心得.

hbcui1984的专栏 4011

Socket网络编程

针对以上面试题,小编已经把面试题+答案整理好了针对以上面试题,小编已经把面试题+答案整理好了[外链图片转存中…(img-DExw5S8K-1714745764405)][外链图片转存中…(img-ucKnmpw7-1714745764405)][外链图片转存中…(img-KfKDUB2d-1714745764405)]

2401_84152232的博客 886

Java网络编程(4):(socket API编程:TCP协议的 socket API -- 回显程序)

TCP协议并没有像 UDP协议 那里一样,提供了send 和 receive 方法。而是提供了和这两个方法,获取到字节输入流对象 和字节输出流对象。Socket 本身,是不会进行读写操作的,而是借助两个字节流对象,和OutStream,完成类似于 UDP协议的 send 和 receive。所以,这也是我推荐你看完Java 文件操作 和 IO(3)-- Java文件内容操作(1)-- 字节流操作这篇博客,再来看这篇博客的理由。掌握了字节流对象的输入和输出操作,才能编写接下来的这个程序。

2301_80934700的博客 911

java socket 文件夹_JAVA socket编程实例

事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Socket就是其中之一.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以准备网络编程了.网络编程的基本模型就是客户机到服务器模型.简单的说就是两个进程之间相互通讯,然后其...

weixin_35223575的博客 118

[网络编程] Java Socket API

socket 这个词的本意是指 “插槽”,也就是硬件上的插口,所以 socket API 可以理解为是操作系统提供给程序开发者,用于操作网络硬件设备的逻辑对象。它是对 TCP/IP 网络协议模型应用层下所有层的抽象,这样的抽象使得软件开发者无需了解应用层下一切网络协议的任何细节,更无需了解 OS 内核和网络硬件设备的运作机制,仅需使用 socket API 发送或获取数据即可。

Steve_Albini的博客 819
上一篇: 统计大文件中的中文字符、英文字符、数字及其他字符的数量
下一篇: jquery datatable themeroller 翻页按钮重叠
NBA_2011
博客等级 码龄16年 12粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值