创建一个侦听两个不同端口的服务器

时间:2011-05-18 17:17:55

标签: java sockets

我在java中有一个应用程序,它只是一个远程服务器。我想设计的远程服务器接受两种客户端:

1.有些在端口6000处以127.0.0.1连接

2.第二种类型的客户端,在端口6500处以127.0.0.1连接

我该怎么做?

我尝试了以下内容:

public class Start {

    Socket socket=null;
    private String  serverIpAddress="127.0.0.1";
    static Thread cThread;
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        ThreadPooledServer server = new ThreadPooledServer(6000);
        new Thread(server).start();




        cThread = new Thread(new ClientThread());
        cThread.start();

    }

ThreadPooledServerClientThread是两个不同的类别。

当我想开始第二个线程......这意味着这一行:

cThread.start(); .... java告诉我“没有封闭的Start类型实例可以访问!!!”

根据我的说法,这意味着我无法在同一个主程序中启动两个不同的线程......好吧,如果我不能这样做的话...这样做的正确方法是什么?... 。开始两个线程

1.在本地机器上侦听端口6000

2.第二次在本地机器上侦听6500端口

更新:我想创建一个可以监听多个端口的服务器,当我得到一个新连接时,我希望能够告诉哪个端口使用了连接!!!!!!!!!!!!

1 个答案:

答案 0 :(得分:1)

如果你想以有效的方式监听多个端口(= SingleThreaded),看看java.nio.SocketChannel和Selector可能是一个好主意,但我认为这对于低负载情况来说是过度的。

关于“无法访问类型Start的封闭实例。”:

在构造函数中创建踏板并创建类的新对象或声明内部类是静态的(如果它不需要访问外部类成员)