永发信息网

Java Socket浏览器输出问题

答案:2  悬赏:70  手机版
解决时间 2021-03-20 10:58
  • 提问者网友:蔚蓝的太阳
  • 2021-03-19 11:19
import java.io.*;
import java.net.*;
public class Main {

public static void main(String[] args) throws Exception{
ServerSocket service = new ServerSocket(18880);
Socket sock = service.accept();
OutputStream out = sock.getOutputStream();
BufferedReader br = new BufferedReader(new FileReader("G:\\Java\\MyEclipse\\Test\\src\\Test.html"));
String line = null;
while((line = br.readLine()) != null){
//Console输出
System.out.println(line);
//浏览器输出
out.write(line.getBytes());
}
out.close();
br.close();
sock.close();
service.close();
}
}

Test.html文件中随便输入两行

然后再浏览器中运行,但是没有输出内容,而网上看的视频是能输出内容的,这是怎么回事?

我是看一个视频的,他浏览器里输入http://(本机地址):18880 之后会显示Test.html中的内容
我在程序最后一行写一个System.out.println("finish");之后程序启动后,会一次在Console中输出Test.html文档中的内容,最后输出一个finish,这说明程序完全运行了吧。但是out.write(line.getBytes());在视频里是浏览器输出的,我浏览器没输出。
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-03-19 12:16
这应该是一个服务器端socket,必须提供客户端与之通信才可以。服务器端socket启动后,进程会阻塞到service.accept();这里来等待客户端请求。看代码应该是服务器端socket在收到客户端的请求后,把从文件流里读取的数据响应给客户端,就结束了。至于你说能在浏览器中运行,我不太明白。
全部回答
  • 1楼网友:玩家
  • 2021-03-19 13:01
假如100个线程发送100个socket请求,同样socketserver也是来一个请求就开启一个线程 问题1:单独的线程,io流对象不也是分开的吗? 那就说明是100个不同的流,如果按你这么设计的话 问题2:按照我们现在的服务器端来说,没个客户端在请求服务器的时候 都会产生一个唯一的sessionid,以区别不同的客户端。 另外:用java来开发不现实。效率就不说,同时也不能在每台机子都装jre吧?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯