会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133675个问题

import java.io.BufferedReader;
import java.io.IOException;
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(){
        Scanner scanner = null;
        PrintWriter pw = null;
        try {
            //创建scanner对象
            scanner = new Scanner(System.in);
            //创建向对方发送消息的流对象
            pw = new PrintWriter(this.socket.getOutputStream());
            while (true){
                String msg = scanner.nextLine();
                pw.println(msg);
                pw.flush();
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (pw != null){
                pw.close();
            }
            if (scanner != null){
                scanner.close();
            }
            if (this.socket != null){
                try {
                    this.socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

/**
 * 接收对方消息的线程类
 */
class ClientReceive extends Thread{
    private Socket socket;
    public ClientReceive(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        this.receiveMsg();
    }
    /**
     * 接收对方消息的方法
     */
    private void receiveMsg(){
        BufferedReader br = null;
        try {
            //创建接受信息的流对象
            br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
            while (true){
                String msg = br.readLine();
                System.out.println("对方说: "+msg);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (br != null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
public class ChatSocketClient {
    public static void main(String[] args) {
        try {
             Socket socket = new Socket("192.168.1.41",8888);
             System.out.println("连接成功");
             new ClientSend(socket).start();
             new ClientReceive(socket).start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
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 ServerSend extends Thread{
    private Socket socket;
    public ServerSend(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        this.sendMsg();
    }
    /**
     * 发送给对方消息的方法
     */
    private void sendMsg(){
        Scanner scanner = null;
        PrintWriter pw = null;
        try {
            //创建scanner对象
            scanner = new Scanner(System.in);
            //创建向对方发送消息的流对象
            pw = new PrintWriter(this.socket.getOutputStream());
            while (true){
                String msg = scanner.nextLine();
                pw.println(msg);
                pw.flush();
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (pw != null){
                pw.close();
            }
            if (scanner != null){
                scanner.close();
            }
            if (this.socket != null){
                try {
                    this.socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

/**
 * 接收对方消息的线程类
 */
class ServerReceive extends Thread{
    private Socket socket;
    public ServerReceive(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        this.receiveMsg();
    }
    /**
     * 接收对方消息的方法
     */
    private void receiveMsg(){
        BufferedReader br = null;
        try {
            //创建接受信息的流对象
            br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
            while (true){
                String msg = br.readLine();
                System.out.println("对方说: "+msg);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (br != null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
public class ChatSocketServer {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(8888);
            System.out.println("服务端已启动,等待连接");
            Socket socket = new Socket();
            serverSocket.accept();
            System.out.println("连接成功");
            new ServerSend(socket).start();
            new ServerReceive(socket).start();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (serverSocket != null){
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
屏幕截图(14).png
image.png

老师,这啥情况,不是连接成功了吗?

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 20311楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 20312楼
JAVA 全系列/第二十四阶段:容器管理技术/Docker 20313楼
JAVA 全系列/第十二阶段:消息中间件(异步消息传递)/ActiveMQ 20314楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 20315楼
JAVA 全系列/第一阶段:AI驱动的JAVA编程/面向对象详解和JVM底层内存分析 20316楼

Connected to server
[2021-06-20 07:11:59,173] Artifact fileupload:war exploded: Artifact is being deployed, please wait...
20-Jun-2021 19:12:08.159 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
[2021-06-20 07:12:08,463] Artifact fileupload:war exploded: Artifact is deployed successfully
[2021-06-20 07:12:08,463] Artifact fileupload:war exploded: Deploy took 9,290 milliseconds
20-Jun-2021 19:12:12.522 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\360Downloads\fitsoft\apache-tomcat-9.0.34-windows-x64\apache-tomcat-9.0.34\webapps\manager]
20-Jun-2021 19:12:16.982 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [D:\360Downloads\fitsoft\apache-tomcat-9.0.34-windows-x64\apache-tomcat-9.0.34\webapps\manager] has finished in [4,460] ms
20-Jun-2021 19:12:24.521 信息 [http-nio-8888-exec-4] org.springframework.web.servlet.DispatcherServlet.initServletBean Initializing Servlet 'springmvc'
20-Jun-2021 19:12:31.598 信息 [http-nio-8888-exec-4] org.springframework.web.servlet.DispatcherServlet.initServletBean Completed initialization in 7075 ms
20-Jun-2021 19:12:31.670 警告 [http-nio-8888-exec-4] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping for GET /favicon.ico
java.io.FileNotFoundException: D:\360Downloads\fitsoft\IdeaProjects\01JAVAEE项目\fileupload\out\artifacts\fileupload_war_exploded\fileupload\8ef878cd-faa6-41c4-9c62-4aa2b5e4871f.png (系统找不到指定的路径。)
	at java.base/java.io.FileOutputStream.open0(Native Method)
	at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
	at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
	at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:187)
	at org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:389)
	at org.springframework.web.multipart.commons.CommonsMultipartFile.transferTo(CommonsMultipartFile.java:168)
	at com.bjsxt.web.controller.FileUploadController.singleFile(FileUploadController.java:33)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:834)
@Controller
@RequestMapping("/file")
public class FileUploadController {
    /*
    * 处理单个文件上传
    *在文件上传时,MultipartFile参数的名称需要与页面的file组件的name相同。
    * 如果不同需要使用@RequestParam注解来指定。
    * */
    @RequestMapping("/singleFile")
    public String singleFile(@RequestParam("file") MultipartFile files, String username, HttpServletRequest request){
        //String name = files.getOriginalFilename();
        //System.out.println(name);
        //System.out.println(username);
        String fileName = UUID.randomUUID().toString()+files.getOriginalFilename().substring(files.getOriginalFilename().lastIndexOf("."));
        String realPath = request.getServletContext().getRealPath("/fileupload");
        File temp = new File(realPath,fileName);
        try {
            files.transferTo(temp);//进行读文件和写文件
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "redirect:/page/ok";
    }
}

老师,检查代码没啥问题啊,就是报错。

JAVA 全系列/第六阶段:项目管理与SSM框架/SpringMVC 20320楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/Oracle 数据库的使用 20321楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 20322楼

tank25.rar

用pyinstaller生成了exe为什么不能运行?

Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 20324楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637