2019独角兽企业重金招聘Python工程师标准>>>

客户端

   public static void main(String[] args) throws UnknownHostException, IOException {// TODO Auto-generated method stubSocket socket = new Socket("192.168.43.195", 12344);BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));System.out.println(br.readLine());socket.close();}

服务端

  public static void main(String[] args) throws IOException {// TODO Auto-generated method stubServerSocket server = new ServerSocket(12344);Socket socket  = server.accept();BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));String line = "hello";bw.write(line);}

代码很简单,可以看到从服务端发出的hello要在客户端输出,但是在运行后并没有达到预期的效果。

除非把server端的输出流关闭才可以在client端输出,在输出流关闭后bw.close()会返回一个null。readline()是一个阻塞函数,在没有数据读的时候会一直卡在那里等待/r/n的出现

分析程序在服务端写入的hello之后客户端则读取,这里选用bufferedreader是因为他里面有一个可以读取整行的方法。调用br.readline()方法之后返回的是string,但是在行的末尾没有/r和/n,readline方法也就没办法停止,一直卡在这里。知道问题出在这里想了一下解决办法,在输入的字符串的末尾加/r/n但是我没有成功,改善的代码如下:

客户端:

  public static void main(String[] args) throws UnknownHostException, IOException {// TODO Auto-generated method stubSocket socket = new Socket("192.168.43.195", 12344);BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintStream ps = new PrintStream(socket.getOutputStream());System.out.println(br.readLine());socket.close();}

服务端:

        public static void main(String[] args) throws IOException {ServerSocket server = new ServerSocket(12344);Socket socket  = server.accept();BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintStream ps = new PrintStream(socket.getOutputStream());ps.println("hello");}

可以看到在ps调用的println方法后会自动换行,此时跳到client端当读到hello的末尾会识别到换行符,就可以打印输出了。

转载于:https://my.oschina.net/u/3755017/blog/1814761

记tcp网络编程中遇到的readline()方法相关推荐

  1. TCP网络编程中connect()、listen()和accept()三者之间的关系

    https://blog.csdn.net/tennysonsky/article/details/45621341 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: ...

  2. 【Linux网络编程】TCP网络编程中connect listen和accept三者之间的关系

    00. 目录 文章目录 00. 目录 01. TCP服务端和客户端流程 02. connect函数 03. listen函数 04. 三次握手 05. accept函数 06. 附录 01. TCP服 ...

  3. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

    基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: connect()函数 对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三 ...

  4. 实例解析网络编程中的另类内存泄漏

    本文分享自华为云社区<[网络编程开发系列]一种网络编程中的另类内存泄漏>,作者:架构师李肯. 1 写在前面 最近在排查一个网络通讯的压测问题,最后发现跟"内存泄漏"扯上 ...

  5. muduo学习笔记:net部分之实现TCP网络编程库-Buffer

    文章目录 为什么采用non-blocking网络编程中应用层buffer是必需的? Buffer 设计 Buffer::readFd() 线程安全 Muduo Buffer 的数据结构 Muduo B ...

  6. protobuf在网络编程中的应用思考

    protobuf简介 protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多.虽然是二进制数据格 ...

  7. 用java网络编程中的TCP方式上传文本文件及出现的小问题

    自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文 ...

  8. 关于网络编程中MTU、TCP、UDP优化配置的一些总结

    首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层.  其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在 ...

  9. 【计算机网络】Linux环境中的TCP网络编程

    文章目录 前言 一.TCP Socket API 1. socket 2. bind 3. listen 4. accept 5. connect 二.封装TCPSocket 三.服务端的实现 1. ...

  10. Python核心编程(第3版)第2章网络编程中关于tcp/udp服务器和客户端实现代码的运行出错的修正

    在Python核心编程(第3版)第2章网络编程中, 关于tcp/udp服务器和客户端实现代码的运行会出现 ['str' does not support the buffer interface]之类 ...

最新文章

  1. 计算机尖端技术,不可思议的尖端技术:Top10
  2. 知识图谱实践篇(四):Apache jena SPARQL endpoint及推理
  3. 吐槽net下没有靠谱的FastDFS的sdk之使用thrift实现JAVA和C#互通
  4. linux 内核fpic,linux编译动态库 fPIC作用
  5. 滚屏加载--无刷新动态加载数据技术的应用
  6. Jzoj4627 斐波那契数列
  7. Error: Trying to remove yum, which is protected
  8. ubuntu安装时出现11:资源暂时不可用
  9. SpringBoot2.0整合jsp
  10. spring5教程(一)——Overview
  11. 电源完整性之Cadence Sigrity Power DC_电热协同仿真
  12. 十分钟了解Http(1)——HTTP的报文到底是什么?
  13. 什么是公考、联考、国考、省考、选调生?
  14. web网页设计期末课程大作业:红色中国文化主题网站设计——灌篮高手(4页)HTML+CSS
  15. sql语法基础,sql分组查询
  16. 台式机计算机图标不见了,win7系统电脑右下角无线网络连接图标不见了怎么办-台式电脑怎么设置无线网络...
  17. Windows下LaTeX报错error font simsun not found的解决方案
  18. 微型计算机k80,微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计(15页)-原创力文档...
  19. 从服务上下载下的日志文件,用UltraEdit打开时中文是乱码解决方法
  20. 眼动数据分析基础知识了解(人眼工作机制)

热门文章

  1. UVa 10870 - Recurrences 矩阵快速幂
  2. Minecart启动器索引
  3. 如何在DNN4下使用VS2005进行单元测试???
  4. T-SQL语句实现数据库备份与还原功能
  5. python的dict()字典数据类型的方法详解以及案例使用
  6. 在 Docker 中使用 mysql 的一些技巧 1
  7. SQL 存储过程 多条件 分页查询 性能优化
  8. 201521123014 《Java程序设计》第7周学习总结
  9. Android studio 配置file encoding 无效,中文乱码解决办法
  10. linux —— ubuntu 初次安装问题