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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效