/** * 创建网络编程中的服务端 */ public class BasicSocketServer { public static void main(String[] args) { Socket socket=null; BufferedReader br=null; try { ServerSocket serverSocket=new ServerSocket(8888);//此处ServerSocket构造方法中的参数是int类型的端口号 System.out.println("服务器启动监听,等待监听。。。。。。"); //开启端口的监听, // 此方法返回的是Socket对象,当前那个客户端来连接就是针对哪个客户端的Socket对象 socket= serverSocket.accept();//可以用这个Socket对象来读取客户端发送过来的对象 //读取客户端发送的消息,从Socket中获取的信息都是字节信息 br=new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(br.readLine()); } catch (IOException e) { e.printStackTrace(); }finally { try { if(br!=null){ br.close(); } if(socket !=null){ socket.close(); } } catch (Exception e) { e.printStackTrace(); } } } }
public class BasicSocketClient { public static void main(String[] args) { Socket socket=null; PrintWriter pw=null; try { //创建socket 对象,在狗杂方法中需要创建两个对象:服务端的IP地址,及服务端的监听端口 socket=new Socket(InetAddress.getLocalHost().getHostAddress(),8888); // socket=new Socket("127.0.0.1",8888); pw=new PrintWriter(socket.getOutputStream()); pw.println("服务端你好"); pw.flush(); } catch (IOException e) { e.printStackTrace(); }finally { if(pw !=null){ pw.close(); } if(socket !=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
显示:
问题: 访问控制台没有东西输出
这后面为什么还要加一个toString方法?
老师,我把桌面的地址复制到绝对路径里面,然后加了一个b.txt,运行之后桌面好像没有生成这个文件,这个绝对路径问题在哪
蓝色框框的可以跟红色的似的移出来单独一行吧
老师 用FileReader直接创建新对象是,为什么该方法会报错?
老师,那个电话本项目我已经可以把信息保存到磁盘里面了,也能成功读取到项目中了,但是我发现每一次保存后,再重新运行项目,然后添加数据后,都会把上一次的数据给覆盖,这有没得方法解决喃
这一步的快捷方式是什么?
for(File temp:files)怎么个遍历法?File是啥意思?temp是变量?files又指的啥啊???【小小的眼睛里充满了大大的疑问】
这个怎么感觉跟DataOutputStream没啥区别?都能写int,char,UTF啥的
String str=FileUtils.readFileToString(new File("d:/sxt.txt"),"utf-8"); System.out.println(str);
问题:控制台输出的内容和文本文件中的内容不一致,少了前两行的字符串,这是什么原因导致的啊?
运行出来,年龄相等的情况下不按照字母顺序排序呢?
package 容器; import java.util.Objects; public class Users implements Comparable<Users>{ private String username; private int userage; public Users(String username, int userage) { this.username = username; this.userage = userage; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Users users = (Users) o; return userage == users.userage && Objects.equals(username, users.username); } @Override public int hashCode() { return Objects.hash(username, userage); } public Users() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getUserage() { return userage; } public void setUserage(int userage) { this.userage = userage; } @Override public String toString() { return "Users{" + "username='" + username + '\'' + ", userage=" + userage + '}'; } //定义比较规则 //正数:大, 负数:小, 0:相等 @Override public int compareTo(Users o) { if (this.userage>o.getUserage()){ return 1; } if (this.username==o.getUsername()){ return this.username.compareTo(o.getUsername()); } return -1; } } System.out.println("=================="); Set<Users> set2=new TreeSet<>(); Users u=new Users("wzx",22); Users u2=new Users("jxm",18); Users u3=new Users("lyx",18); Users u4=new Users("yj",18); set2.add(u); set2.add(u2); set2.add(u3); set2.add(u4); for (Users users:set2){ System.out.println(users); }
老师,在用add方法添加元素时,元素的hashcode值已经确定,但是因为是调用object的hashcode方法所以值可能是不相同的。 所以需要重写hashcode方法根据添加元素的属性字段将相同属性字段的元素的hashcode值变为一样的,再利用equals方法比较,如果一样则不添加。 如果没有重写hashcode方法,hashcode值不同就不会去调用equals方法比较。老师,我理解的对吗? 但是如果添加的元素的hashcode值在添加时就是相等的,那么是调用object的equals方法比较,相同则不添加;还是调用重写的equals方法比较呀
老师想问一下这里没有继承thread为什么还可以用sleep 和currentThread
为什么需要跟红色的一样才行呢?
老师,那个字符串类型我写字母也报错了为什么?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637