我在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();
}
ThreadPooledServer
和ClientThread
是两个不同的类别。
当我想开始第二个线程......这意味着这一行:
cThread.start();
.... java告诉我“没有封闭的Start类型实例可以访问!!!”
根据我的说法,这意味着我无法在同一个主程序中启动两个不同的线程......好吧,如果我不能这样做的话...这样做的正确方法是什么?... 。开始两个线程
1.在本地机器上侦听端口6000
2.第二次在本地机器上侦听6500端口
更新:我想创建一个可以监听多个端口的服务器,当我得到一个新连接时,我希望能够告诉哪个端口使用了连接!!!!!!!!!!!!
答案 0 :(得分:1)
如果你想以有效的方式监听多个端口(= SingleThreaded),看看java.nio.SocketChannel和Selector可能是一个好主意,但我认为这对于低负载情况来说是过度的。
关于“无法访问类型Start的封闭实例。”:
在构造函数中创建踏板并创建类的新对象或声明内部类是静态的(如果它不需要访问外部类成员)