- 2024-03-30查看全文#提问# socket编程的IO流关闭顺序是什么?这是我的服务端代码和客户端代码,此时可以正常运行。但是将服务端的bis.close();放到bos.close();后面就会报错:Socket is closed。更改客户端的bos.close();的位置也会导致Socket is closed。...鱼友0412:在Socket编程中,关闭IO流的顺序是有一定规则的。一般来说,应该先关闭输出流(即写入数据的流),然后再关闭输入流(即读取数据的流)。这是因为关闭输出流将会发送一个信号给对方,表示已经写入完毕,而关闭输入流会等待对方的回应,如果对方未收到信号,可能会导致异常。在你的代码中,服务端的流关闭顺序是正确的,先关闭了输出流bos,然后关闭了输入流bis。然而,客户端的流关闭顺序是有问题的。你将bos.c510分享
昨天到34关了,今天怎么又得从第一关开始了😰
抽奖
摸鱼结束,开始工作😭我正在参加码神挑战,一起呀~https://1024.codefather.cn/
这题什么意思?也没给参数呀
看了一会评论区,感觉有些题不止一个答案呀🧐
大佬们给个思路,真想不出来了😢
第四关炸鱼皮我跟你拼了😡
#提问# 因为时间比较紧,所以没学前端,用鱼总的项目去面试的话,会被问前端的问题吗?如果被问到说和同学合作的,我只负责后端部分可以吗?
#提问# socket编程的IO流关闭顺序是什么?这是我的服务端代码和客户端代码,此时可以正常运行。但是将服务端的bis.close();放到bos.close();后面就会报错:Socket is closed。更改客户端的bos.close();的位置也会导致Socket is closed。是服务端和客户端之间的IO流只能在最后一起关闭吗? public class TCPFileUploadServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(9999); Socket socket = serverSocket.accept(); String file_path = "tarimg\\2.jpg"; BufferedInputStream bis = new BufferedInputStream(socket.getInputStream()); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file_path)); int readLen = 0; byte[] buf = new byte[1024]; while((readLen = bis.read(buf))!=-1){ bos.write(buf,0,readLen); } bos.flush(); bos.close(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); bw.write("收到图片"); bw.newLine(); bw.flush(); socket.shutdownOutput(); bw.close(); bis.close(); socket.close(); serverSocket.close(); System.out.println("已发送"); } } public class TCPFileUploadClient { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),9999); String file_path = "srcimg\\1.jpg"; BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file_path)); BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream()); byte[] buf = new byte[1024]; int readLen = 0; while((readLen = bis.read(buf))!=-1){ bos.write(buf,0,readLen); } bos.flush(); bis.close(); socket.shutdownOutput(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String s = br.readLine(); System.out.println(s); br.close(); bos.close(); socket.close(); } }


