首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在atime中打开两个ServerSocket

如何在atime中打开两个ServerSocket
EN

Stack Overflow用户
提问于 2014-03-15 01:28:54
回答 2查看 92关注 0票数 1

我有一个需求,那就是我需要一次打开两个ServerSockets,并连续侦听这两个套接字各自的套接字。

它们单独工作很好,但我需要将它们一起工作。

代码语言:javascript
运行
复制
while(true){
    Socket socket = serversocket1.accept()
    new SocketProcessor(socket).start(); 
}

while(true){
    Socket socket = serversocket2.accept()
    new AnotherSocketProcessor(socket).start(); 
}

我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2014-03-15 01:37:54

你可以从这里参考这个。你必须使用多线程...

Listening to two ports simultaneously in Java server using multithreading

票数 1
EN

Stack Overflow用户

发布于 2014-03-15 01:35:40

你有没有考虑过多线程?

首先,我们创建一个实现Runnable接口的类。

代码语言:javascript
运行
复制
class SocketListenerRunnable implements Runnable {
    ServerSocket serverSocket;
    SocketProcessor socketProcessor;

    public void setServerSocket (ServerSocket serverSocket) {
        this.serverSocket = serverSocket;
    }

    public void setSocketProcessor (SocketProcessor socketProcessor) {
        this.socketProcessor = socketProcessor;
    }

    public void run () {
        while (true) {
            Socket socket = serverSocket.accept ();
            socketProcessor (socket).start ();
        }
    }
}

然后我们只在需要的时候使用它。

代码语言:javascript
运行
复制
SocketListenerRunnable r1 = new SocketListenerRunnable ();
r1.setServerSocket (serverSocket1);
r1.setSocketProcessor (socketProcessor1);
Thread t1 = new Thread (r1);
t1.start ();

SocketListenerRunnable r2 = new SocketListenerRunnable ();
r2.setServerSocket (serverSocket2);
r2.setSocketProcessor (socketProcessor2);
Thread t2 = new Thread (r2);
t2.start ();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22411889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档