2 sinat 36832192 sinat_36832192 于 2018.01.18 20:03 提问

服务器端accept访问阻塞,导致两个客户端无法同时访问服务器 5C

package server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

public static void main(String[] args){
    ServerSocket serverSocket = null;

    try {
        serverSocket = new ServerSocket(8888);
        System.out.println("服务器端准备就绪");
        while(true){
            Socket recieve = serverSocket.accept();
            ThreadInServer TS = new ThreadInServer(recieve);
            TS.start();

        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

其中ThreadInServer是新开的线程,用来进行文件传输
当两个客户端同时访问时,会显示“正在等待可用的套接字”
如果我想两个及以上客户端同时访问这个服务器,这里的代码如何改进?

2个回答

cangwu
cangwu   2018.01.18 21:32

这边没有什么错误的,客户端的错误信息是怎样显示出来的呢,看看具体错误的地方,是哪

sinat_36832192
sinat_36832192 没问题了...浏览器的锅
4 个月之前 回复
sinat_36832192
sinat_36832192 地址是 http://localhost8888,8888是端口号这样子
4 个月之前 回复
sinat_36832192
sinat_36832192 是要建立一个可以在web浏览器上读取本地资源的服务器,ThreadInServer是一个从本地读取文件的线程,我在浏览器上使用http://localhost8888访问本地文件时,打开一个 http://localhost8888页面之后,如果再使用 http://localhost8888访问,浏览器就会显示“正在等待可用的套接字”,我认为问题出在accept的阻塞上不知道如何改进。
4 个月之前 回复
qq499526040
qq499526040   2018.01.20 09:22

这样写有stackoverflow的风险,建议使用线程池

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!