File f2=new File("d:/b.txt"); f2.createNewFile();
创建文件必须这两行都写吗,第二行表示创建文件,第一行用来说明文件地址吗
package com.itbaizhan; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * 用于接收客户端消息的线程类 */ class ChatReceive extends Thread{ private Socket socket; public ChatReceive(Socket socket){ this.socket = socket; } @Override public void run() { this.receiveMsg(); } /** * 实现接收客户端消息 */ private void receiveMsg(){ try(BufferedReader br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()))){ while (true){ String msg = br.readLine(); synchronized ("abc"){ //把读取到的数据写入公共区 ChatRoomServer.buf = "["+this.socket.getInetAddress()+"]"+msg; //唤醒发送消息的线程 "abc".notifyAll(); } } }catch (Exception e){ e.printStackTrace(); } } } /** * 向客户端发送消息的线程类 */ class ChatSend extends Thread{ private Socket socket; public ChatSend(Socket socket){ this.socket = socket; } @Override public void run() { this.sendMsg(); } /** * 实现向客户端发送消息 */ private void sendMsg(){ try(PrintWriter pw = new PrintWriter(this.socket.getOutputStream())){ while (true){ synchronized ("abc"){ //让发送消息的线程处于等待状态 "abc".wait(); //将公共区域中数据发送给客户端 pw.println(ChatRoomServer.buf); pw.flush(); } } }catch (Exception e){ e.printStackTrace(); } } } public class ChatRoomServer { //定义公共数据区 public static String buf; public static void main(String[] args) { System.out.println("Chat Server Version V1.0"); System.out.println("Listen at 8888........"); try(ServerSocket serverSocket = new ServerSocket(8888)){ while (true){ Socket socket = serverSocket.accept(); System.out.println("连接到:"+socket.getInetAddress()); //将与客户端对应的socket对象床底到接收消息的线程中 new ChatReceive(socket).start(); //将与客户端对应的socket对象床底到发送消息的线程中 new ChatSend(socket).start(); } }catch (Exception e){ e.printStackTrace(); } } } //以下是客户端代码 package com.itbaizhan; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /** * 发送消息的线程 */ class Send1 extends Thread { private Socket socket; private Scanner scanner; public Send1(Socket socket, Scanner scanner) { this.socket = socket; this.scanner = scanner; } @Override public void run() { this.sendMsg(); } /** * 发送消息 */ private void sendMsg() { try (PrintWriter pw = new PrintWriter(this.socket.getOutputStream());) { while (true) { String str = scanner.nextLine(); pw.println(str); pw.flush(); } } catch (Exception e) { e.printStackTrace(); } } } /** * 接收消息的线程 * */ class Receive1 extends Thread{ private Socket socket; public Receive1(Socket socket){ this.socket = socket; } @Override public void run() { this.receiveMSg(); } /** * 接收消息 */ private void receiveMSg(){ //创建用于接收对方消息的流对象 try(BufferedReader br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()))){ while (true){ String msg = br.readLine(); System.out.println("他说:"+msg); } }catch (Exception e){ e.printStackTrace(); } } } public class GoodTCP { public static void main(String[] args) { ServerSocket serverSocket = null; Socket socket = null; try{ //键盘输入对象 Scanner scanner = new Scanner(System.in); System.out.println("请输入:Server,<port>或者:<IP>,<port>"); String str = scanner.nextLine(); String[] arr = str.split(","); //启动服务端 if("server".equals(arr[0])){ //启动服务端 System.out.println("TCP Server Listen at "+arr[1]+"......"); serverSocket = new ServerSocket(Integer.parseInt(arr[1])); socket= serverSocket.accept(); }else { //启动客户端 socket = new Socket(arr[0],Integer.parseInt(arr[1])); System.out.println("连接成功"); } //启动发送消息的线程 new Send1(socket,scanner).start(); //启动接收消息的线程 new Receive1(socket).start(); }catch (Exception e){ e.printStackTrace(); }finally { if (serverSocket!=null){ try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
启动客户端时,为啥报了索引越界。
文档这个功能怎么没有了呀,老师!!
老师,Java中的I0流在面试的时候考的频率多吗?
老师,这个打印主线程的语句在最后,为什么操作台是那个stop方法的打印语句在最后。是不是因为那个时间片轮训算法啊
import java.net.InetAddress; import java.net.UnknownHostException; public class InetTest3 { public static void main(String[] args) throws UnknownHostException { //创建根据IP地址获取计算机信息的InetAddress对象 InetAddress inetAddress=InetAddress.getByName("182.61.200.6"); //返回ip地址 System.out.println(inetAddress.getHostAddress()); //返回计算机名 System.out.println(inetAddress.getHostName()); }
没返回计算机名?
为什么newThr解说是24怎么还写的是12
什么是“键”
这里不是等于空嘛,怎么是不等于空
老师macOS系统下载这个工具包要怎么下载啊
因为Set没有指定索引的位置,所以获取所有元素的时候只能用增强for来实现吗?
老师请问一下,这个sb.toString()的输出和sb的输出都是abcdefgh,那怎么样输出sb的地址呢?
这两句重复实例化对象为什么每次都要放在方法里面,一直重复为什么不放在外面呢?放在外面不是更节省内存?放在里面和放在外面有什么区别呢?或者是两者有什么优缺点?要是自己写代码怎么判断写里面还是外面?
package com.itbaizhan; import java.io.*; public class TestFileBufferStream { public static void main(String[] args) { long time1=System.currentTimeMillis(); copyFile("d:/1.jpg","d:/3.jpg"); long time2=System.currentTimeMillis(); System.out.println(time2-time1); } /** * sourse 源文件 * destination 目的地文件 */ public static void copyFile(String source,String destination){ //实例化节点流对象 try(FileInputStream fis=new FileInputStream(source); FileOutputStream fos=new FileOutputStream(source); //实例化处理流对象 BufferedInputStream bis=new BufferedInputStream(fis); BufferedOutputStream bos=new BufferedOutputStream(fos)){ int temp=0; while ((temp=bis.read())!=-1){ bos.write(temp); } bos.flush(); }catch (IOException e){ e.printStackTrace(); } } }
并没有生成3.jpg
通配符的上下限限定什么情况下使用?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637