因此,我使用Processing的网络Server
和Client
课程,以服务器/客户端方式进行了一场小船战斗游戏。
当我在同一设备(Ubuntu 15.10 Wily Werewolf)上运行服务器和客户端时,一切正常,但Client
的构造函数在尝试连接到运行在Windows 10上的服务器时冻结。客户端和服务器都使用名为Connexion
的类:
Connexion{
boolean isServer;
Server s;
Client c;
Connexion(PApplet source, int port){ //To create a server
isServer = true;
s = new Server(source, port);
}
Connexion(PApplet source, int port, String ip){ //To create a client
isServer = false;
c = new Client(source, ip, port);
}
void update(){/*Dealing with messages ...*/}
}
我所做的是导出它然后启动它两次,一次作为服务器,一次作为客户端。使用127.0.0.1
作为IP,他们都工作正常,我做了所有游戏。
我只是尝试让它在不同的设备上运行,在Windows 10上作为服务器运行,在我的Ubuntu上作为客户端运行。服务器代码运行正常,初始化期间不会发生错误或冻结。但是,当客户端尝试连接时,行c = new Client(...)
暂停:没有抛出异常,控制台中没有消息,......没有(我使用println()
来知道它停在哪里)。 (使用的IP是Server.ip()
在服务器端提供的IP地址,192.168。[...]
我想这是一个防火墙问题(McAffee要求访问互联网的权限,我同意),或Windows阻止某些东西?没有线索。 Processing Net documentation (Client class)说
如果连接出现任何问题,例如主机不存在或正在侦听其他端口,则会抛出异常。
当我尝试做相反的事情(服务器作为Ubuntu和客户端作为Windows)时,Server.ip()
给出了127.0.1.1但没有发生任何事情,但我怀疑这是错误的IP。可悲的是,我没有时间去测试其他任何东西。
所以我的问题是,我如何才能使这项工作?如果在没有触及系统设置的情况下无法使其工作,那么多人游戏如何管理呢? (一直使用的端口是6666,我怀疑它来自那里但是我会写它以防万一)。