目录

引出问题

第一种(只能读取一行数据)

第二种(可以读取多行数据)


引出问题

写一个socket的公共方法,结果发现socket读取一行数据就结束了,百思不得其解。

在网上也找了一些资料,很多也有坑,这里贴出来自己用的两种方法,以后就不用一直找解决方案了。

第一种(只能读取一行数据)


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class Client {final static String ADDRESS = "127.0.0.1";final static int PORT = 8765;public static void main(String[] args) {Socket socket = null;BufferedReader in = null;PrintWriter out = null;try {socket = new Socket(ADDRESS, PORT);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(), true);//向服务器端发送数据out.println("接收到客户端的请求数据...");String response = in.readLine();System.out.println("Client: " + response);} catch (Exception e) {e.printStackTrace();} finally {if(in != null){try {in.close();} catch (IOException e) {e.printStackTrace();}}if(out != null){try {out.close();} catch (Exception e) {e.printStackTrace();}}if(socket != null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}socket = null;}}
}

第二种(可以读取多行数据)

import java.io.*;
import java.net.Socket;public class PostmanSocketController {public String socketClient(String ip, Integer port, String reqInfo, String bm) throws Exception {Socket s = null;OutputStream out = null;InputStream in = null;String rs = "";try {s = new Socket(ip, port);s.setSendBufferSize(4096);s.setTcpNoDelay(true);s.setSoTimeout(60*1000);s.setKeepAlive(true);out = s.getOutputStream();//in = s.getInputStream();//准备报文msg//编码out.write(reqInfo.getBytes(bm));out.flush();rs = readAll(s, bm);} catch (Exception e) {throw e;}finally{try {if(out!=null){out.close();out = null;}if(in!=null){in.close();in = null;}if(s!=null){s.close();s = null;}} catch (IOException e) {e.printStackTrace();}}return rs;}public static String readAll(Socket socket, String bm) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), bm));StringBuilder sb = new StringBuilder();String line;while ((line = reader.readLine()) != null)sb.append(line).append("\n");return sb.toString();}}

java的socket读取一行就结束运行了?使用这种方法可以读取多行数据!相关推荐

  1. Java web应用引用外部jar包 运行时报ClassNotFoundException 解决方法

    最近做了个封装接口SDK的项目,在做模拟程序调用SDK的jar时,运行时出现了ClassNotFoundException. 由于是多个组件的项目,我只在运用调用jar包代码的组件中引用jar包,试过 ...

  2. 前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;

    原文链接 FileReader来把文件读入内存,并且读取文件中的数据. readAsDataURL方法可以在浏览器主线程中异步访问文件系统,读取文件中的数据,且读取后 result 为 DataURL ...

  3. java编程,字符流BufferedReader,读取一行数据。finally,readLine

    package onelo;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...

  4. c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2

    软帝学院笔记Day18 IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符 ...

  5. 从socket中读取一行语句

    对于很多基于telnet协议的服务,如FTP, POP3等,它们的操作是通过输入一行字符完成的,这就需要socket每次读取一行,这可以通过文件流的方式完成(详见上一条). 程序如下:(设sockfd ...

  6. java导出jar包后,程序运行时读取图片、音乐资源文件

    java导出jar包后,程序运行时读取图片.音乐资源文件 运行时程序就可以把图片.音乐资源加载进入了 start jre/bin/java -jar 名称.jar

  7. Java基于Socket实现聊天、群聊、敏感词汇过滤功能

    首先的话,这个代码主要是我很久以前写的,然后当时还有很多地方没有理解,现在再来看看这份代码,实在是觉得丑陋不堪,想改,但是是真的改都不好改了- 所以,写代码,规范真的很重要. 实现的功能: 用户私聊 ...

  8. java编写socket使用bufferedReader.readLine()问题研究

    不写java代码好久,临时写个socket通讯竟然失败,郁闷之下仔细研究了下. 客户端使用BufferedReader来读取数据,在while中调用BufferedReader.readLine()函 ...

  9. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受

    一.Java之socket服务端 新建一个Java工程 命名 给他先创建一个类 在类里面我们做一个main 这里面也需要,创建套接字,IP号,端口号 但是java中有一个类         Serve ...

最新文章

  1. [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解
  2. 判断一个IP区间(或IP)是否被另一个IP区间所包含
  3. 一个丧心病狂的Github项目:东北话编程,大写的服!
  4. html 多行多列列表格,HTML跨多行跨多列表格.doc
  5. QByteArray
  6. python类创建对象底层实现机制(简单)
  7. HTML 小练习(休假申请单)
  8. python 图片 变清晰_python模糊图片过滤的方法
  9. 学习SQLAlchemy Core
  10. C# Socket之TCPUDP
  11. 玩转群晖NAS套件系列一:cloud sync套件的安装与使用保姆级教程!
  12. 小程序毕设作品之微信小程序点餐系统毕业设计(1)开发概要
  13. Python使用pytesseract进行验证码图像识别
  14. Excel的Index函数详解
  15. 小白学习MySQL - MySQL会不会受到“高水位”的影响?
  16. 引爆全球 新华三首款MANO亮相英特尔网络“航展”
  17. Spring 学习笔记----->AOP
  18. c/c++进阶之爱恨交织的临时对象: 二、天使与魔鬼
  19. 度量衡计算工具_【度量衡换算器下载】中国古代度量衡换算器 v2.1 中文版-开心电玩...
  20. mysql数据备份合理计划_计划备份mysql数据库

热门文章

  1. Java获取近七天的数据条数,及页面实现折线图(附前后端代码)
  2. 对账模块和赊购退款、还款流程
  3. 计算机网络技术协议名词解释,网络协议名词解释
  4. sugar linux桌面,Sugar一个Linux的Distro和学习平台为孩子们 | MOS86
  5. android 动画 最顶层_【Android编程实战】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗...
  6. windows服务又界面吗_详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)...
  7. python字符识别_crnn(基于pytorch、python3) 实现不定长中文字符识别
  8. 滚动条的值如何赋值_如何给Word文本框添加滚动条?史上最详细步骤
  9. python与tensorflow的关系_Tensorflow GPU与CPU安装库的区别
  10. 用python重复下载文件_python 爬虫 重复下载 二次请求