首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关闭BufferedReader/PrintWriter会关闭套接字连接吗?

关闭BufferedReader/PrintWriter会关闭套接字连接吗?

在Java中,关闭BufferedReader/PrintWriter不会直接关闭底层的套接字连接。BufferedReader和PrintWriter是基于输入输出流(InputStream和OutputStream)的高效读写类。当关闭BufferedReader或PrintWriter时,它们只会关闭与之关联的输入输出流,而不会关闭套接字连接。

要关闭套接字连接,您需要显式地调用Socket的close()方法或将其用于try-with-resources语句。

例如:

代码语言:java
复制
Socket socket = new Socket("example.com", 80);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

// 使用BufferedReader和BufferedWriter进行读写操作

// 关闭BufferedReader和BufferedWriter
reader.close();
writer.close();

// 关闭套接字连接
socket.close();

或者使用try-with-resources语句:

代码语言:java
复制
try (Socket socket = new Socket("example.com", 80);
     BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))) {

  // 使用BufferedReader和BufferedWriter进行读写操作
}

在这种情况下,当try块执行完毕时,BufferedReader和BufferedWriter将自动关闭,但仍需要显式地关闭套接字连接。

总之,关闭BufferedReader/PrintWriter不会关闭套接字连接,您需要确保在完成读写操作后显式地关闭套接字连接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

网络通信中基于套接输入流和输出流的创建

基本方法 要实现套接的网络通信,需要分四个步骤完成:   (1)创建套接Socket,连接成功后形成网络连接通道;   (2)由套接对象Socket调用getInputStream()或getOutputStream...()方法,分别返回具有套接通信的基础输入流InputStream和输出流OutputStream对象作为参数,完成绑定套接通信的输入流和输出流对象的创建。   ...(3)用输入和输出流对象调用其对应方法的操作方式实现网络通信;   (4)网络通信结束,需要关闭输入流和输出流对象,尤其要关闭套接对象。...建立br和bw对象代码如下: BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));...PrintWriter writer=new PrintWriter(socket.getOutputStream(),true);

71020

网络协议:一文搞懂Socket套接

TCP 协议提供的是点对点的通信,每条 TCP 连接由两端的套接唯一确定。可以理解为 TCP 连接两端的套接来连起来就形成了管道,管道的两端或者说管道的端口就是 Socket 套接。...这类套接中,传输数据之前必须在两个应用进程之间建立一条通信连接, 这就确保了参与通信的两个应甩进程都是活动并具响应的e当连接建立之卮应用进程只要通过套接向 TCP 层发送数据流,而另一个应用进程便可以接收到相应的数据流...2、数据报套接(SOCK_DGRAM) 提供了一种无连接的服务,通信双方不需要建立任何显式连接,数据可以发送到指定的套接,并且可以从指定的套接接收数据。...与数据报套接相比,使用流式套接是一个更为可靠的方法,但对于某些应用,建立一个显式连接所导致的系统开销是令人难以接收的,并且数据报套接支持广播和多播方式。...getInputStream() // 返回此套接的输出流 getOutputStream() // 根据连接是否关闭返回一个boolean值,关闭则返回true,否则返回false isClose

1.6K20

JAVA Socket详解

1、服务器监听:是服务器端套接并不定位具体的客户端套接,而是处于等待连接的状态,实时监控网络状态。...2、客户端请求:是指由客户端的套接提出连接请求,要连接的目标是服务器端的套接。...为此,客户端的套接必须首先描述它要连接的服务器的套接,指出服务器端套接的地址和端口号,然后就向服务器端套接提出连接请求。...3、连接确认:是指当服务器端套接监听到或者说接收到客户端套接连接请求,它就响应客户端套接的请求,建立一个新的线程,把服务器端套接的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。...而服务器端套接继续处于监听状态,继续接收其他客户端套接连接请求。

36920

《Java-SE-第三十一章》之网络编程

&ebsp;&ebsp;当我们使用浏览器进行搜索时,浏览器根据关键搜索出视频,图片文本等资源,这些资源都属于网络资源。网络资源相比于本地资源来说更加的丰富多彩。...基于Socket套接的网络程序开发就是网络编程 套接分类 流套接:使用传输层TCP协议,对于字节流来说,可以简单的理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的情况下,是无边界的数据...关闭此数据报套接 DatagramPacket API DatagramPacket是UDP Socket发送和接收的数据报。...() 关闭套接 Socket API Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法)的请求后,返回的服务端Socket。...方法: 方法签名 方法说明 InetAddress getInetAddress() 返回套接连接的地址 InputStream getInputStream() 返回此套接的输入流 OutputStream

25740

Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)

(图片来自:http://www.jianshu.com/p/089fb79e308b) Socket 分为流式套接和用户数据报套接,分别使用传输层中的 TCP 和 UDP 协议。...流程 服务端: 调用 ServerSocket(int port) 创建一个 ServerSocket,绑定到指定端口 调用 accept() 监听连接请求,如果客户端请求连接则接受,返回通信套接...调用 Socket 类的 getOutputStream() 和 getInputStream() 获取输出和输入流,进行网络数据的收发 关闭套接 客户端: 调用 Socket() 创建一个流套接,...连接到服务端 调用 Socket 类的 getOutputStream() 和 getInputStream() 获取输出和输入流,进行网络数据的收发 关闭套接 使用 UDP 通信的 Socket 流程...,以接受 UDP 包 调用 DatagramSocket 的 receive() 接收 UDP 包 调用 DatagramSocket.send() 发送 UDP 包 关闭数据报套接 客户端: 调用

2.4K71

TCP关闭连接(为什么能 Time_wait,Close_wait ) ?

要分析这个原因那就得从关闭连接程的四次握手,有时也会是三次握手,说起。如下图所示: 大家都知道tcp正常的关闭连接要经过四次握手。...这个状态是主动关闭方在收到被关闭方的FIN后会处于并长期(2个MSL时间,根据具体的实现不同,这个值不同,在RFC 1122建议MSL=2分钟,但在Berkeley的实现上使用的值为30s,具体可以看...说白了就是即使socket断了,重新调用前面的socket函数不会再去占用新的一个,而是始终就是一个端口,这样防止socket始终连接不上,不断地换新端口。...这种关闭方式称为“强行关闭”,而后套接的虚电路立即被复位,尚未发出的所有数据都会丢失。而被动关闭方却不知道对端已经彻底断开。...当被动关闭方正阻塞在recv()调用上时,接受到RST时,立刻得到一个“connet reset by peer”的异常(即对端已经关闭),c中是返回一个EPEERRST错。

13.5K21

17:网络编程

,打电话 建立连接,形成传输数据的通道 在连接中进行大数据量的传输 通过三次握手完成连接,是可靠的协议 .必须建立连接,效率稍低 注:三次握手:第一次本方发送请求,第二次对方确认连接,第三次本方再次发送确认信息告诉对方...端口号与IP地址的组合得出一个网络套接。...:ServerSocket(int port):指定接收的客户端的端口 3)Socket accept():侦听并接受到此套接连接,服务器用于接收客户端socket对象的方法 注:服务器没有socket...“流的末尾” 5)void shutdownOutput():禁用此套接的输出流 6)InputStream getInputStream():返回此套接的输入流 7)OutputStream getOutputStream...():返回套接的输出流 实例: 定义tcp的服务端   建立服务端的socket服务,ServerSocket,并监听一个端口   获取连接过来的客服端对象,通过ServerSokcet的 accept

65350

利用HttpURLConnection发送请求

HttpURLConnection: 每个 HttpURLConnection实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。...请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。...如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接 HttpURLConnection的父类是URLConnection 今天写此文章的目的是由于工作中遇到ajax请求获取数据时碰到浏览器的跨域问题...reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8")); String line = "";...如果需要传入对应的参数要用到PrintWriter的print方法 PrintWriter osw = new PrintWriter(conn.getOutputStream()); osw.print

1.3K30

Java之网络编程笔记

,是可靠协议     *在连接中进行大数据量传输     *必须建立连接,效率稍低 示例:打电话,下载 4.SMTP:简单邮件传输协议 ,端口号是25.   ...Socket客户端: (1)Socket s = new Socket(ip,port);打开一个套接,发送请求     (2)InputStream istream = s.getInputStream...我们在使用PrintWriter时需要使用println()函数; 当服务器或客户端任意一方请求结束通信,则立刻停止。 问题1:在套接中会发生阻塞的地方: (1)实例化Socket时,阻塞。...(2)对于第二个问题,解决方法是设置s.setSoTimeout(long)设置超时时间 问题2:当客户端想要关闭套接时,但却不能确定服务器是否还在发送数据,但是只要一关闭就立刻断开。...前两个异常的解决方法是首先确保程序退出前关闭所有的网络连接,其次是要检测对方的关闭连接操作,发现对 方关闭连接后自己也要关闭连接

53720

Android查缺补漏(IPC篇)-- 进程间通讯之Socket简介及示例

一、Socket是什么 Socket又称“套接”,是网络通信中的概念,应用程序通常通过“套接”向网络发出请求或者应答网络请求。...Socket分为流式套接和用户数据报套接两种,分别对应于网络的传输控制层的TCP和UDP协议。...in = null; PrintWriter out = null; try { // 用于接收客户端消息 in = new BufferedReader...mPrintWriter.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } 最后在onDestroy方法中将Socket连接关闭...参考文献: 《Android开发艺术探索》 《socket_百度百科》 源码地址:本系列文章所对应的全部源码已同步至github,感兴趣的同学可以下载查看,结合代码看文章更好。

37240

Android查缺补漏(IPC篇)-- 进程间通讯之Socket简介及示例

一、Socket是什么 Socket又称“套接”,是网络通信中的概念,应用程序通常通过“套接”向网络发出请求或者应答网络请求。...Socket分为流式套接和用户数据报套接两种,分别对应于网络的传输控制层的TCP和UDP协议。...in = null; PrintWriter out = null; try { // 用于接收客户端消息 in = new BufferedReader...mPrintWriter.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } 最后在onDestroy方法中将Socket连接关闭...参考文献: 《Android开发艺术探索》 《socket_百度百科》 源码地址:本系列文章所对应的全部源码已同步至github,感兴趣的同学可以下载查看,结合代码看文章更好。

1K60

Android查缺补漏(IPC篇)-- 进程间通讯之Socket简介及示例

一、Socket是什么 Socket又称“套接”,是网络通信中的概念,应用程序通常通过“套接”向网络发出请求或者应答网络请求。...Socket分为流式套接和用户数据报套接两种,分别对应于网络的传输控制层的TCP和UDP协议。...in = null; PrintWriter out = null; try { // 用于接收客户端消息 in = new BufferedReader...mPrintWriter.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } 最后在onDestroy方法中将Socket连接关闭...参考文献: 《Android开发艺术探索》 《socket_百度百科》 源码地址:本系列文章所对应的全部源码已同步至github,感兴趣的同学可以下载查看,结合代码看文章更好。

54710

互联网编程之传输协议与套接应用编程

进入无限循环while (true),表示服务器一直运行。 调用serverSocket的accept()方法接受客户端的连接请求,并将返回的Socket对象赋值给变量client。...; //发送文件 String mainPath = "C:\\Users\\Yezi\\Desktop\\互联网编程\\实验4传输协议与套接应用编程\\web\\";...获取要发送的文件的完整路径,这里使用了固定的路径"C:\Users\Yezi\Desktop\互联网编程\实验4传输协议与套接应用编程\web\"。 创建File对象file,表示待发送的文件。...DataInputStream(input).readLong(); String savePath = "C:\\Users\\Yezi\\Desktop\\互联网编程\\实验4传输协议与套接应用编程...在主函数main中,初始化一个整型变量count为0,用来记录成功创建的Socket连接次数。 使用一个无限循环while(true),表示一直执行以下操作。

14520

JAVA网络编程TCP通信

Socket简介: Socket称为“套接”,描述IP地址和端口。...Socket常用方法: -int getLocalPort() 获取本地使用的端口号 -InetAddress getLocalAddress() 获取套接绑定的本地地址 -int getPort()...获取远端使用的端口号 -InetAddress.getInetAddress() 获取套接绑定的远端地址 InetAddress常用方法: -String getCanonicalHostName(...(isr); br.readLine();//读取接到的内容 } 注意:当使用完Socket进行通讯完毕后,要关闭Socket以释放系统资源 -void close() 关闭套接,同时也代表关闭了获取的输入与输出流...客户端Socket连接 1 //参数1:服务端的IP地址,参数2:服务端的服务器端口 2 //注意:创建Socket的同时就会发起连接,若连接失败抛出异常 3 Socket socket=new Socket

85120
领券