老师,receive的作用是等待客户端发送消息是吗?
String str=new String(dp.getData(),0,dp.getLength());是有什么作用? dp.getData(),0,dp.getLength()分别代表了什么意思?
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class ChatRoomServer { //定义公共数据区 public static String buf; public static void main(String[] args) { System.out.println("Chat Server Version 1.0"); System.out.println("Listen at 8888"); try (ServerSocket ss = new ServerSocket(8888)) { while(true){ Socket socket = ss.accept(); System.out.println("连接到 "+socket.getInetAddress()); new ChatReceive(socket).start(); new ChatSend(socket).start(); } } catch (IOException e) { throw new RuntimeException(e); } }}class ChatReceive extends Thread{ private Socket socket; public ChatReceive(Socket socket){ this.socket = socket; } @Override public void run() { doChatReceive(); } public void doChatReceive(){ try(BufferedReader bf = new BufferedReader(new InputStreamReader(socket.getInputStream()))){ while(true){ String str = bf.readLine(); synchronized ("abc"){ ChatRoomServer.buf = "["+socket.getInetAddress()+"]"+ str; "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() { sendMsg(); } private void sendMsg() { try(PrintWriter pw = new PrintWriter(socket.getOutputStream())){ while (true) { synchronized ("abc "){ //先让发送消息的线程处于等待状态 "abc".wait(); //将公共数据区中的消息发送给客户端 pw.println(ChatRoomServer.buf); pw.flush(); } } }catch (Exception e){ e.printStackTrace(); } }}
老师想问一下连接后客户端一直循环输出null是什么问题呢?
有3个问题:
1.
想问下,这个8888端口,是客户端发送数据的端口?服务端接收数据的端口是9999,被封装在dp中。
数据通过客户端的8888端口把数据发出去,根据dp中ip和端口,找到服务器,才被接收?
2.
看之前别的回答,写到如果用一个端口会有端口冲突问题,因为现在的服务端和客户端都在一个ip地址内,如果是不同的ip地址,是不是端口冲突也无所谓了?
3.
为什么在TCP中,没有发送数据并且定义端口这个过程,而是可以直接通过socket,给定服务器的ip地址和端口,就可以发送数据,这里是没有发送数据的过程,还是说这个过程和定义服务端发送端口的操作,被自动实现了?
老师,是不是复制目录时,目录底下全是文件夹时,就会报空指针异常呢?我的刚开始就是复制的目录底下全是文件夹吧,后来换了一个有文件和文件夹夹杂着的,就不再报异常
老师这里是因为什么啊
java虚拟机执行到字节码new 类名()时,会在字节码存储区或者类加载区扔一个模子,然后再根据模子创建对象。
字节码存储区和类加载区指的是什么?是不是同一个区域?是磁盘中区域还是内存中的区域?
我的理解
Servlet servlet=WebApp.getServlet(req.geturl());
这句代码创建的Servlet对象是LoginServlet
也就是相当于多态:LoginServlet servlet=new Servlet() //老师这个理解正确吗
接下来看Servlet类中的方法,和LoginServlet类中的方法
servlet.service(req,rep)
相当于LoginServlet.service(req,rep),但是在LoginServlet中没有service这个方法
老师,您能给个解析吗
谢谢
老师第二章反射技术的资料下载和网络编程的重合了,麻烦重新上传一下
这里的时间为什么是从8:00:00开始的· 不是零点零时零分吗
老师,我不太明白静态方法和非静态方法
咋通俗的理解啊
老师,我想问一下为什么我用不了getChildren()方法和getAttribute方法了,jdom包和dom4j我都导了,而且在另一个程序里面能用,这个里面就不能用了,这是为什么?
这里的33和38行用了这两个方法却能用:
这种直接new的FilrReader是自动关闭了吗
说不存在?
for(File temp:files)怎么个遍历法?File是啥意思?temp是变量?files又指的啥啊???【小小的眼睛里充满了大大的疑问】
老师有第二阶段课程的讲义文档吗?有的话可以像第一阶段一样方便笔记
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637