web服务器没响应,Java的Web服务器没有响应

博主在尝试创建一个能处理多个客户端的简单Web服务器。第一个示例代码只能处理一个客户端,而第二个示例旨在扩展处理能力。然而,第二个代码在浏览器中无法正常显示HTML响应,但通过telnet命令可以接收到HTTP响应。问题可能是浏览器与服务器的交互或DataOutputStream的使用。解决方案尚未明确。
摘要由CSDN通过智能技术生成

我这段代码的目标是创建一个可以处理多个客户端一个简单的Web服务器,并且将与HTML回应说“HI”,当客户端请求它。

代码:

这里的测试号一个。它只能处理一个客户端:

import java.net.*;

import java.io.*;

public class Webserver1 {

public static void main(String[] args) {

ServerSocket ss;

Socket s;

try {

//set up connection

ss = new ServerSocket(80);

s = ss.accept();

} catch (Exception e) {

System.out.println(e.getMessage());

return;

}

try (

BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));

DataOutputStream out = new DataOutputStream (s.getOutputStream());

) {

String inline = in.readLine();

//http request

if (inline.startsWith("GET")) {

//return http

out.writeBytes("

hi

");

}

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

这里是测试二号。它是为了处理多个客户端:

import java.net.*;

import java.io.*;

public class Webserver2 {

//class to handle connections

public static class server {

ServerSocket ss;

Socket s[] = new Socket[maxn];

public server() {

try {

ss = new ServerSocket(80);

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

public InputStream getis(int num) throws Exception {

return s[num].getInputStream();

}

public OutputStream getos(int num) throws Exception {

return s[num].getOutputStream();

}

public void close() throws Exception {

for (int i = 0; i < numc; i++) {

s[i].close();

}

}

public void newc() throws Exception {

s[numc + 1] = ss.accept();

}

}

static int numc = 0;

static final int maxn = 100;

static server se = new server();

public static void main(String[] args) {

try {

while (numc < 6) {

//set up connection, and start new thread

se.newc();

numc++;

System.out.println("0");

(new Client()).start();

}

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

public static class Client extends Thread {

public void run() {

try(

BufferedReader in = new BufferedReader(new InputStreamReader(se.getis(numc)));

DataOutputStream out = new DataOutputStream (se.getos(numc));

) {

String inline;

while(true) {

inline = in.readLine();

//wait for http request

if (inline.startsWith("GET")) {

System.out.println("1");

//respond with header, and html

out.writeBytes("HTTP/1.1 200 OK\r\n");

out.writeBytes("Connection: close\r\n");

out.writeBytes("Content-Type: text/html\r\n\r\n");

out.writeBytes("

hi

");

out.flush();

}

}

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

}

问题:

在我的电脑,如果我跑的第一个例子,并且在我的浏览器I型:“http://192.168.1.xxx”,我得到一个简单的“喜”。但是,如果我尝试同样的事情,那么在第二个方面它根本行不通。但是如果在命令提示符下输入:telnet 192.168.1.xxx 80,那么输入GET就会返回html。另外,如果我用PrintWriter替换DataOutputStream,它甚至不会将它发送到telnet。但是,我知道它会尝试,因为每次连接时程序打印“0”,每次打印时打印“1”。

问题:

那是什么阻止浏览器查看HTML的问题?

它是否与html本身,我设置我的连接或DataOutputStream的方式?

我该如何解决这个问题?

2015-03-25

Evan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值