为什么一定要先等客户端发送消息以及客户端去结束呢?
//创建数据输出流对象与文件字节输出流对象 4 try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("d:/data")); 5 //创建数据输入流对象与文件字节输入流对象 6 DataInputStream dis = new DataInputStream(new FileInputStream("d:/data"))){
这里如果我不事先在D盘下准备好data文件的话,直接运行会提示系统找不到该文件的错误。而我看老师在编写代码的过程中也没有自己创建文件。是在录课前就准备好了?还是这里有什么门道?
下面是我的代码
//创建字符输入缓冲流、输入字节到字符转换流、文件字节输入流对象 4 try(BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:/sxt.txt"))); 5 //创建字符输出缓冲流、输出字符到字节转换流、文件字节输出流对象 6 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:/sxt4.txt")))){
使用InputStreamRead对FileInputStream字节流进行转换为字符流我还能理解,因为是将
字节流转换为字符流嘛。但是使用OutputStreamWrite进行字符流向字节流的转换,而这里传给OutputStreamWrite的是FileOutputStream一个字节流,而返回值竟然是一个字符流的对象(因为其返回值送给了BufferedWrite作为参数)。那么这里怎么体现了字符流向字节流的转换呢?这不是字节流转换成字符流嘛?
老师,为什么这两个对象是同一个对象?
str1的java前面有空格吗?如果有空格的话跟str2就不是同一个字符串了,为什么会是true?
为什么我在使用缓冲区后耗时会出现0啊
老师为什么要加上一个休眠啊
异常处理要重点掌握吗
1、DatagramPacket的构造函数给的是4个参数,视频三个参数为什么也可以?
2、DatagramPacket类的API文档里没有这种3个参数的啊?
3、DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"), 9999); 这样是不是更合理?
老师有API文档的中文版吗?
在创建文件字节输出流FileOutputStream fos=new FileOutputStream(denistation)的时候并没有给定参数true,即默认参数false,那么在文件通过缓冲区写入的时候不是写一次就被覆盖一次吗?
哈哈,讲课老师好像在后面回答了
取款线程的账户对象类型是Account呢
这是什么原因?
package TCP通信.项目; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; class Send extends Thread{ private Socket socket; public Send( Socket socket ) { this.socket = socket; } @Override public void run( ) { this.sendMsg(); } private void sendMsg(){ try( Scanner sc = new Scanner(System.in)){ PrintWriter pw=new PrintWriter(socket.getOutputStream()); while ( true ){ String msg=sc.next(); pw.println(msg); pw.flush(); } } catch ( Exception e ) { e.printStackTrace(); } } } class Recevie extends Thread{ private Socket socket; public Recevie( Socket socket ) { this.socket = socket; } @Override public void run( ) { this.recevieMsg(); } public void recevieMsg(){ try( BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()))){ while ( true ){ String msg=br.readLine(); System.out.println("他说"+msg ); } } catch ( Exception e ) { e.printStackTrace(); } } } public class ChatSocketServer { public static void main( String[] args ) { try(ServerSocket serverSocket = new ServerSocket(8888);){ System.out.println( "服务器已启动,等待监听............" ); Socket socket=serverSocket.accept(); System.out.println("连接成功!" ); new Send( socket ).start(); new Recevie( socket ).start(); } catch ( Exception e ) { e.printStackTrace(); } } } ............................................................. package TCP通信.项目; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; class ClientSend extends Thread{ private Socket socket; public ClientSend( Socket socket ) { this.socket = socket; } @Override public void run( ) { this.sendMsg(); } private void sendMsg(){ try( Scanner sc=new Scanner(System.in); PrintWriter pw = new PrintWriter(socket.getOutputStream());){ while ( true ){ String msg = sc.next(); pw.println(msg); pw.flush(); } }catch( Exception e ){ e.printStackTrace(); } } } class ClientReceive extends Thread{ private Socket socket; public ClientReceive( Socket socket ) { this.socket = socket; } @Override public void run( ) { super.run( ); } private void receiveMsg(){ try( BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()))){ while ( true ){ String msg=br.readLine(); System.out.println("他说:"+msg ); } } catch ( Exception e ) { e.printStackTrace(); } } } public class ChatSocketClient { public static void main( String[] args ) { try{ Socket socket = new Socket("127.0.0.1", 8888); System.out.println("连接成功" ); new ClientSend( socket ).start(); new ClientReceive( socket ).start(); }catch (Exception e ){ e.printStackTrace(); } } }
这是什么情况?
为什么是这样的?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637