top啦它 2022-04-27 22:24 采纳率: 70%
浏览 35
已结题

socket返回数据失败

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class HttpServer {
    public static final String WEB_ROOT = System.getProperty("user.dir") + File.separator + "src\\main\\java\\ex01\\static";

    public static void main(String[] args) throws IOException, InterruptedException {
        HttpServer server = new HttpServer();
        server.await();
    }

    public void await(){
        ServerSocket serverSocket = null;
        int port = 8999;
        try{
            serverSocket = new ServerSocket(port,1, InetAddress.getByName("127.0.0.1"));
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
        Socket socket = null;
        try {
            socket = serverSocket.accept();
        } catch (IOException e) {
            e.printStackTrace();
        }
        PrintWriter printWriter = null;
        try {
            printWriter = new PrintWriter(socket.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        String errorMessage = "HTTP/1.1 404 File Not Found\r\n"+
                "Content-Type: text/html\r\n" +
                "Content-Length: 23\r\n" +"\n"+
                "<h1>File Not Found</h1>";
        printWriter.println(errorMessage);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

我在浏览器访问http://127.0.0.1:8999/home 却无法访问。

输出为:

Connected to the target VM, address: '127.0.0.1:49586', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:49586', transport: 'socket'

  • 写回答

1条回答 默认 最新

  • 欧阳小伙 2022-04-27 23:20
    关注

    帮你改造了一下,你试试。可以的话,就采纳吧,加油同学。

    
    
    
    
    import java.io.*;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
        public class HttpServer {
            public static final String WEB_ROOT = System.getProperty("user.dir") + File.separator + "src\\main\\java\\ex01\\static";
    
            public static void main(String[] args) throws IOException, InterruptedException {
                HttpServer server = new HttpServer();
                server.await();
            }
    
            public void await() throws IOException {
                ServerSocket serverSocket = null;
                int port = 8999;
                try{
                    serverSocket = new ServerSocket(port,1, InetAddress.getByName("localhost"));
                } catch (IOException e) {
                    e.printStackTrace();
                    System.exit(1);
                }
                Socket socket = null;
                try {
                    socket = serverSocket.accept();
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    BufferedReader bf = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    
                    String result = bf.readLine();
                    System.out.println(String.format("TCP from %s: %d , receive data: %s", socket.getInetAddress(), socket.getPort(), result));
                    if (result != null) {
                        String errorMessage = "HTTP/1.1 404 File Not Found\r\n"+
                                "Content-Type: text/html\r\n" +
                                "Content-Length: 23\r\n" +"\n"+
                                "<h1>File Not Found</h1>";
                        bw.write(errorMessage);
                        bw.flush();
                        System.out.println(String.format("TCP back------>ok %d",result.length()));
                    }
    
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
    
                socket.close();
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月7日
  • 已采纳回答 4月29日
  • 修改了问题 4月27日
  • 创建了问题 4月27日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办