【发布时间】:2013-09-21 18:30:47
【问题描述】:
您好,我正在尝试创建多线程 Web 服务器 我已经提到 Link 1 Link 2
import java.net.*;
import java.io.*;
public class WebServer {
ServerSocket server;
public WebServer() {
try {
server=new ServerSocket(3000);
} catch (IOException ex) {
System.out.println("exc in const "+ex.getMessage());
}
}
Socket client;
BufferedReader br;
Thread t=new Thread(new Runnable(){
@Override
public void run() {
try{
System.out.println(br.readLine());
}
catch(Exception e){
System.out.println("exc is "+e);
}
}
});
public void RUN(){
while(true){
try {
client=server.accept();
System.out.println(client.getPort());
if(client!=null){
r=new BufferedReader(new InputStreamReader(client.getInputStream()));
t.start();
}
} catch (IOException ex) {
System.out.println("ex is "+ex.getMessage());
}
}
}
public static void main(String[] args) {
WebServer webserver=new WebServer();
try {
webserver.RUN();
} catch (Exception e) {
System.out.println("main "+e);
}
}
}
在上面的代码中,我不断收到线程非法访问异常,那么为什么我不断收到此异常 我想在浏览器中打开多个选项卡并打开 localhost:3000 然后服务器必须打印 http 请求和端口号,但这仅发生在第一个客户端而不是其他客户端,它显示非法线程访问异常并且程序终止
如果有任何页面说明如何在网络浏览器中显示某些内容,将不胜感激。
【问题讨论】:
-
如果您添加异常的堆栈跟踪会有所帮助
-
您好,我正在使用 trycatch 块,所以我只收到异常消息,只有当程序执行由于未捕获的异常而停止时,我们才会获得堆栈跟踪?
-
我将从实现一个简单的生产者/消费者模式开始。不是粗鲁,但我认为网络服务器可能有点超出你的能力。
-
@Boris 那么我如何接受来自多个客户端的连接呢?我是新手,所以必须完成
-
@Boris 超能力与否我一定要试一试
标签: java client-server