java socket 服务端如何判断有没有新客户端加入

 我来答
紫霜落枫
2014-11-12 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:54
采纳率:0%
帮助的人:46.8万
展开全部
while(true){
try {
ServerSocket serverSocket = new ServerSocket(88888);
Socket socket = serverSocket.accept();
if(socket != null){
System.out.println("链接的用户ip="+socket.getInetAddress());
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这一段代码一运行,会阻塞在serverSocket.accept();当一有客户连接,马上会返回一个包含客户端信息的socket
追问
你这个代码一次只能接受一个客户端,多个就不起作用了额!
追答

写好点应该这样,不会只有一次,因为有个while(true),只要你不停,一直可以接受请求的。public class TCPServer {


    ExecutorService threadPool = Executors.newCachedThreadPool();


    public TCPServer(int port) {

        init(port);

    }


    private void init(int port) {

        try {

            ServerSocket serverSocket = new ServerSocket(port);

            while (true) {

                Socket socket = serverSocket.accept();

                if (socket != null) {

                    threadPool.execute(new ProcessRunnable(socket));

                }

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

    }


    public static void main(String[] args) {

        new TCPServer(8888);

    }

    

    class ProcessRunnable implements Runnable {


        public ProcessRunnable(Socket socket) {

            System.out.println(socket.getInetAddress().toString());

        }


        public void run() {


        }

    }

}


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式